在C++中map/set iterators不是可递增的错误

use*_*070 2 c++ iterator map

当我执行以下代码时,我得到map/set迭代器不可递增的错误.

typedef std::multimap<int, int> MapType;

assgnt::MapType my_map;
assgnt::MapType::iterator it;
for(it = my_map.begin(); it != my_map.end(); )
{
    my_map = obj1.addGoodNeighbours(it->first, it->second, my_map); 
    ++it;
}
Run Code Online (Sandbox Code Playgroud)

请帮忙

mfo*_*ini 6

我不知道是什么assgnt::MapType,但是在for循环中分配另一个assgnt::MapType,my_map这不是一件好事:

my_map = obj1.addGoodNeighbours(it->first, it->second, my_map); 
Run Code Online (Sandbox Code Playgroud)

你应该至少重新分配迭代器:

for(it = my_map.begin(); it != my_map.end(); ++it;) {
    my_map = obj1.addGoodNeighbours(it->first, it->second, my_map); 
    it = my_map.begin();
}
Run Code Online (Sandbox Code Playgroud)

但我相信代码远非正确.在迭代它时,你基本上是在破坏迭代的结构.

编辑:我们确实知道MapType现在是什么.所有这些仍然是正确的.您不能在迭代时重新分配地图.