欢迎来到入门教程网!

C语言

当前位置:主页 > 软件编程 > C语言 >

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

来源:本站原创|时间:2020-01-10|栏目:C语言|点击:

问题的关键是:在删除元素之前,将当前迭代器保存下来。当然,这里仅支持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循环删除元素,迭代器失效的问题详解全部内容了,希望大家多多支持我们~

上一篇:浅谈mwArray和一般数组的区别

栏    目:C语言

下一篇:xxx_cast类型转换的实现方法

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

本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/1899.html

网页制作CMS教程网络编程软件编程脚本语言数据库服务器

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

Copyright © 2002-2020 脚本教程网 版权所有