为什么我不能在迭代时编辑集合/ map ? 示例:
bool flag;
set <int> :: iterator aIterator;
set <int> :: iterator bIterator;
bIterator = B.begin();
for (bIterator=B.begin(); bIterator!=B.end(); ++bIterator)
{
flag = true;
aIterator = A.begin();
for (aIterator=A.begin(); aIterator!=A.end(); ++aIterator)
{
if (*bIterator == *aIterator)// if an elemnet in B is found in A, delete that element from A and check the next element of B
{
A.erase(aIterator);
flag = false;
break;
}
}
if (flag == true)
A.insert(*bIterator); //if not found then add that element to A(which now represents the set of symmetric difference)
}
我该如何处理?我的意思是,如何在迭代时编辑集合?
最佳答案
这样做:
for (aIterator=A.begin(); aIterator!=A.end();++aIterator)
不是这样的:
for (bIterator=A.begin(); bIterator!=A.end();++aIterator)
aIterator 未初始化,您不能递增它。
其余的看起来还不错。
关于c++ - Sets/Maps 迭代器不可递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27223956/