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

问题的关键是:在删除元素之前,将当前迭代器保存下来。当然,这里仅支持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循环删除元素,迭代器失效的问题详解分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/481722.html

(0)
上一篇 2020年11月9日
下一篇 2020年11月9日

精彩推荐