开发者社区 > 云原生 > 容器服务 > 正文

容器erase操作报错求解!!?报错

删除掉vector容器中的偶数值,List容器中的奇数值。程序编译通过,运行报错,提示vector iterator not incrementable

求分析原因

#include "stdafx.h"
#include <iostream>
#include <string>
#include <list>
#include <vector>
using namespace std;
int main()
{
	int ia[]={0,1,1,2,3,5,8,13,21,55,89};
	size_t word_size=sizeof(ia)/sizeof(int);
	vector<int> ivec(ia,ia+word_size);
	list<int>  ilist(ia,ia+word_size);
	for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();iter++)
	{
		if(*iter%2==0)
			ivec.erase(iter);
	}
	for(list<int>::iterator iter2=ilist.begin();iter2!=ilist.end();iter2++)
	{
		if(*iter2%2!=0)
			ilist.erase(iter2);	
	}
	return 0;
}

展开
收起
爱吃鱼的程序员 2020-06-22 17:10:43 369 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    iter=xxx.erase(iter)

    else

    iter++


    对于vector,rbegin倒删可以减少移动内存的开销.

    2020-06-22 17:10:59
    赞同 展开评论 打赏
问答分类:
问答标签:

国内唯一 Forrester 公共云容器平台领导者象限。

相关电子书

更多
阿里云文件存储 NAS 在容器场景的最佳实践 立即下载
何种数据存储才能助力容器计算 立即下载
《容器网络文件系统CNFS》 立即下载