当我执行以下代码时,我得到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)
请帮忙
我不知道是什么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现在是什么.所有这些仍然是正确的.您不能在迭代时重新分配地图.
归档时间: |
|
查看次数: |
7517 次 |
最近记录: |