迭代器删除之后的处理

原创 2015年11月21日 16:55:35
#include<iostream>
#include<list>
using namespace std;

/*测试迭代器删除当前位置的变动之后是否有效
 *结果无效,得重新设置,在这里我设置了一个局部变量tmp用于暂时存储下一个位置
 */
void test()
{
	list<int> l1;
	for(int i=0;i<100;i++)
	{
		l1.push_back(i);
	}
	list<int>::iterator it=l1.begin(),itEnd=l1.end();
	it=l1.begin();
	for(int i=0;i<l1.size();i++)
	{
		cout<<*it<<" ";
		it++;
	}
	cout<<endl;
	it=l1.begin();
	for(;it!=itEnd;++it)
	{
		list<int>::iterator tmp=it;
		tmp++;
		if((*it)%10==0)
		{
			l1.erase(it);
			cout<<__FILE__<<endl;
			it=tmp;
		}
	}
	cout<<"after erase "<<endl;
	it=l1.begin();
	for(int i=0;i<l1.size();i++)
	{
		cout<<*it<<" ";
		it++;
	}
	cout<<endl;
}
int  main()
{
	test();
	return 0;
}

版权声明:尚开源精神,亦需版权意识

STL list erase 删除一个节点后,迭代器会失效吗

STL list erase 删除一个节点后,迭代器会失效吗
  • smilestone322
  • smilestone322
  • 2013年12月31日 17:31
  • 1095

迭代器删除操作写法及解释

1 迭代器是什么? 迭代器是一种典型的设计模式,与集合配套使用,其目的是隐藏集合中的内部成员,并且提供对集合成员的访问能力。其结构如下图所示; 具体协作关系及实现方式,就不在此赘述...
  • sandware
  • sandware
  • 2014年11月08日 18:50
  • 662

C++ STL 迭代器删除问题总结

iterator erase( iterator pos ); 对C++ STL中迭代器的删除需要慎重,如上方法。 1、vector vector在遍历中进行 erase(pos) ,这个时候i...
  • ghosc
  • ghosc
  • 2011年11月24日 16:20
  • 8732

vector删除 迭代器总结

1. 如下场景出现了越界访问,若是vs上就是死循环了     运行结果为: 2. vector中有4个元素,即上面的注释去掉 发现迭代器最后一次删除,迭代器没有继续++,而还是执...
  • bruce_wang_janet
  • bruce_wang_janet
  • 2011年10月17日 00:19
  • 4902

JAVA利用迭代器快速的删除数据

JAVA 在集合中删除数据
  • weixin_37259491
  • weixin_37259491
  • 2017年02月02日 21:10
  • 324

C++中利用迭代器删除元素

C++中利用迭代器删除元素会发生什么 (1)对于关联容器(如map,set,multimap,multiset),删除当前的iterator,仅仅会使当前的iterator失效,只要在erase时,递...
  • u011261430
  • u011261430
  • 2017年07月13日 09:40
  • 1170

利用Java迭代器删除list中元素

利用Java迭代器删除list中元素昨天晚上,老师问了一个问题:Java中怎么删除list中指定位置的元素,提示是用迭代器。简单实现如下: import java.awt.List; import j...
  • saintmetatron
  • saintmetatron
  • 2015年12月10日 13:32
  • 1016

STL容器的遍历插入或删除(迭代器失效问题的统一解决)

STL容器根据迭代器的失效问题,其实可以分为两类容器: (1)数组型容器的插入删除操作:vector、string、deque(均为顺序存储)         由于这类容器的插入或删除都会使所有迭...
  • hechao3225
  • hechao3225
  • 2017年02月14日 16:42
  • 404

如何使用迭代器iterator循环删除容器中的元素?

STL中任何容器都可以使用迭代器进行元素的遍历,当需要在遍历中删除某些元素时,容器中元素的布局(位置或者排序)会随之改变,当前迭代器所指示的元素也会发生变化,这时继续递增或者递减迭代器进行后续元素的遍...
  • chaoi
  • chaoi
  • 2007年03月03日 20:41
  • 10577

STL迭代器遍历中删除元素问题

STL的管理对象的管理器一般会给上层提供回调函数形如: templete struct CallBack { bool exec(Entry* entry)=0; } templete ...
  • yuanfengyun
  • yuanfengyun
  • 2015年08月19日 15:40
  • 866
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:迭代器删除之后的处理
举报原因:
原因补充:

(最多只允许输入30个字)