读书人

vector有关问题

发布时间: 2012-02-29 16:44:10 作者: rapoo

vector问题
写了一个删除向量中奇数的程序 可是当遍历到第三次时 在if (*liter%2!=0)这句就崩溃了
请高手帮我看看
#include <iostream>
#include <list>

using namespace std;

void main()
{
int ia[] = {0,1,1,2,3,5,8,13,21,55,89};
list<int> ilist;
for (int i=0;i<11;i++)
{
ilist.push_back(ia[i]);
}
//ilist.insert(ilist.begin(),ia,ia+11);
list<int>::iterator liter ;
for (liter = ilist.begin();liter != ilist.end();liter++)
{
if (*liter%2!=0)
{
ilist.erase(liter);
}
}
liter = ilist.begin();
for (;liter != ilist.end();liter++)
{
cout<<*liter;
}
}

[解决办法]
erase之后迭代器会失效,需要重新获得
例如这样
liter = ilist.erase(liter);

读书人网 >C++

热点推荐