vector iterator not incrementable For information on how your program can cause an an assertion Failure, see the Visual c + + documentation on asserts

#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;
}

问题(vector iterator not incrementable For information on how your program can cause an an assertion Failure, see the Visual c + + documentation on asserts. (Press Retry to debug the application)
这个比较典型,当删除的元素不是最后一个,则没有太大问题。
VS2008下运行这个,当slist.erase(iter);当要删除的元素是slist中的最后一个的时候,执行erase之后
iter就指向end了,再次进入for循环,执行++iter就出错了。。。(erase会是迭代器失效)

默认的是const  iterator  是会出现这种错误的:

判断

if (it != m_Bullsts.end())   //迭代器失效
{
it++;
}

上一篇:Java基础知识强化之IO流笔记20:FileOutputStream写出数据实现换行和追加写入


下一篇:如何下载和安装CocoaPods