移除迭代器的元素时,会使迭代器失效,如下:
错误的用法:
for (list<int>::iterator iTer = lstData.begin(); iTer != lstData.end(); ++iTer)
{
if (某条件)
lstData.erase(iTer);//此时iTer已经失效,无法进行++操作
else
//正常遍历
}
正确的用法:
for (list<int>::iterator iTer = lstData.begin(); iTer != lstData.end(); )
{
if (某条件)
lstData.erase(iTer++);
else
//正常遍历
++iTer;
}