首页 > 编程 > C > 正文

基于list循环删除元素,迭代器失效的问题详解

2020-01-26 14:20:09
字体:
来源:转载
供稿:网友

问题的关键是:在删除元素之前,将当前迭代器保存下来。当然,这里仅支持list,因为list的链式的删除一个元素,前面的指针指向下一个元素,vector和queue就不好办了,它们或者是线性的或者是半线性半链式,迭代器会失效

#include<iostream>#include<list>using namespace std;int main(){	list<int *> l;	for(int i=1;i<=100;i++)	{		int* temp=new int;		*temp=i;		l.push_back(temp);	}	list<int *>::iterator it=l.begin();	list<int *>::iterator ittemp=l.begin();	for(;it!=l.end();++it)	{		cout<<*(*it)<<endl;	}	it=l.begin();	ittemp=l.begin();	for(;it!=l.end();)	{		ittemp=it;		++it;		delete (*ittemp);		l.erase(ittemp);	}	cout<<l.size()<<endl;	return 0;}

以上就是小编为大家带来的基于list循环删除元素,迭代器失效的问题详解全部内容了,希望大家多多支持武林网~

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选