知道遍历容器,在循环内部删除元素会导致问题,但用的时候却想不起来为什么会导致这样的问题,也不知道如何处理了。现在列于此。
对于 C++ 的容器,调用 earse 方法后,该方法返回下一个指向容器元素的迭代器,要将这个值重新赋值给迭代器变量。
for
(VectorType::iterator it = someVector.begin(); it != someVector.end();)
{
if
(*it== value)
{
it = someVector.erase(it);
}
else
{
++it;
}
}
对于 Java 的容器,不能使用 for( : ) 遍历然后在里面用容器的 remove方法。正确的做法如下;
Iterator<int> it = CollectionType.getIterator();
while(it.hasnext())
{
if( 3 == (int) it))
it.remove();
}