我有一个map<int, Button*>
其中的按钮类有几个属性,特别是一个名为位置的整数变量。
如果我想在 Button 类中交换两个位置,我必须更改键,始终为键 = Button-> 位置,并且它必须是地图。
我想到了删除地图的两个位置(使用擦除)并重新插入(指示索引):
示例(已知 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;
但似乎没有改变对象。为什么?