当使用vector<>::iterator时,有时会发生这种情况,iterator not incrementable
#include <list>
using namespace std;
int _tmain(int argc, _TCHAR* argv[]){
list<int> slist;
list<int>::iterator iter;
slist.push_back(1);
slist.push_back(5);
slist.push_back(11);
for(iter = slist.begin(); iter != slist.end(); ++iter){
if(11 == *iter){
slist.erase(iter);
}
}
return 0;
}
当slist.erase(iter);当要删除的元素是slist中的最后一个的时候,执行erase之后
iter就指向end了,再次进入for循环,执行++iter就出错了。。。(erase会是迭代器失效)
如果在程序中对vector中的元素做了修改,添加或者删除元素之后,迭代器就会失效,这时候就不要使用迭代器了。