我有一個map<int, Button*>
其中按鈕類有幾個屬性,特別是一個名爲位置的整數變量。交換地圖的兩個元素
如果我想在Button類中交換兩個位置,我必須改變這個鍵,始終是key = Button-> position,它必須是一個映射。
我認爲(使用擦除)並重新插入刪除的地圖的兩個位置中的(指示索引):
實施例(indexFirst和indexSecond是已知的):
map<int, Button*> buttons;
int posOfFirst = buttons.find(indexFirst)->second->getPos();
int posOfSecond = buttons.find(indexSecond)->second->getPos();
Button* button1 = buttons.find(indexFirst)->second;
Button* button2 = buttons.find(indexSecond)->second;
buttons.erase(indexFirst);
buttons.erase(indexFirst);
buttons[posOfSecond] = button2;
buttons[posOfFirst] = button1;
但似乎沒有改變對象。爲什麼?
但你甚至在哪裏做交換?看着你的代碼,我沒有看到。 Button1位於indexFirst或posOfFirst的位置,而button2位於indexSecond或posOfSecond的位置,這在代碼中沒有改變。 – Amadeus