C++ 删除容器元素哪里错了

//9_26.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include<iostream>#include<vector>#inclu... // 9_26.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<vector>
#include<list>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int ia[]={0,1,1,2,3,5,8,13,21,55,89};
vector<int>ivec;
list<int>ilist;
for(int i=0;i<11;i++)
{
ivec.push_back(ia[i]);
ilist.push_back(ia[i]);
}
for(list<int>::iterator iter=ilist.begin();iter!=ilist.end();iter++)
{
if(*iter%2!=0)
{
iter=ilist.erase(iter);
--iter;
}

}
for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();iter++)
{
if(*iter%2==0)
{
iter=ivec.erase(iter);
--iter;
}
}
cout<<"The even list"<<endl;
for(list<int>::iterator iter=ilist.begin();iter!=ilist.end();iter++)
cout<<*iter<<' ';
cout<<"The odd vector"<<endl;
for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();iter++)
cout<<*iter<<' ';
system("pause");
return 0;
}
展开
 我来答
lkjhggv
2015-05-29 · TA获得超过3063个赞
知道大有可为答主
回答量:1550
采纳率:66%
帮助的人:1318万
展开全部
iter=ilist.erase(iter);
--iter;

如果删除的是第一个元素,则删除后iter指向第一个元素,那么--iter就有问题了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式