容器erase操作报错求解!!

izmm 发布于 2013/08/27 15:23
阅读 164
收藏 0

删除掉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;
}

加载中
0
小耶果
小耶果

iter=xxx.erase(iter)

else

iter++


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

返回顶部
顶部