首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vector有关问题

2012-02-29 
vector问题写了一个删除向量中奇数的程序 可是当遍历到第三次时 在if (*liter%2!0)这句就崩溃了请高手帮

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);

热点排行