c++中List在遍历时删除节点的方法,带源码
来源:互联网 发布:云计算开发工程师 编辑:程序博客网 时间:2024/06/04 19:29
今天在开发的过程中遇到问题,想要遍历一个List中的节点,满足一定条件则删除该节点,但是由于使用的是iterator就会出现错误,最后找到解决方法,并写了一个测试程序,呵呵:
// ListTest.cpp : Defines the entry point for the console application.
//#include "stdafx.h"#include <iostream>#include <list>#include <algorithm>using namespace std;struct st_user{int id;char name[255];};int _tmain(int argc, _TCHAR* argv[]){st_user a1,a2,a3;a1.id = 1;sprintf(a1.name,"%s","xxxxxxxxx");a2.id = 2;sprintf(a2.name,"%s","fff");a3.id = 3;sprintf(a3.name,"%s","bbbb");list<st_user*> list1;list1.push_back(&a1);list1.push_back(&a2);list1.push_back(&a3);printf("------------------------------\n");for(list<st_user*>::iterator iter = list1.begin(); iter != list1.end(); ++iter){printf("%s \n", (*iter)->name);}printf("------------------------------\n");for(list<st_user*>::iterator iter = list1.begin(); iter != list1.end();){if( (*t)->id == 2 ){iter = list1.erase(t);}else++iter;}printf("------------------------------\n");for(list<st_user*>::iterator iter = list1.begin(); iter != list1.end(); ++iter){printf("%s \n", (*iter)->name);}printf("------------------------------\n");system("pause");return 0;}
运行结果:
--------------------------------------
@2015-7-20 10:06:01 修正了网友们提到的错误,哈哈,这个错误太低级了,敬请原谅
原来错误的代码:
for(list<st_user*>::iterator iter = list1.begin(); iter != list1.end(); ++iter){if( (*t)->id == 2 ){list1.erase(t);}}
- c++中List在遍历时删除节点的方法,带源码
- c++下list在遍历时删除节点的方法
- c++中List在遍历时删除节点的方法(转载)
- list遍历时删除元素
- 如何在遍历时删除List中的元素
- 集合list在遍历时是不能做删除操作的
- vector, list, map在遍历时删除符合条件的元素
- std中vector和list容器遍历时元素的动态删除
- python list遍历时删除元素的推荐做法
- List,Set,Map遍历时删除元素
- ArrayList在遍历时做删除的陷阱
- java中Iterator遍历时的删除问题
- Java遍历时删除List、Set、Map中的元素(源码分析)
- List--遍历时的错误用法
- List遍历时陷阱
- 使用ListIterator 对List遍历时修改,删除
- CCArray数组或者vector容器元素在遍历时删除的删除技巧
- hibernateTemplate.find方法的使用,查的list不是空,但是遍历时却是null
- extjs4 动态加载树
- ssh无密码登录主机
- uva-133 - The Dole Queue
- 关于HTTP协议中的KeepAlive属性
- 双口RAM在高速数据采集系统中的应用
- c++中List在遍历时删除节点的方法,带源码
- 学生信息管理系统总结之“经典语句一”
- AVR-GCC Makefile 中文翻译并加上我的理解(原发于:2007-11-20)
- android 模拟器上GPS的使用
- 使用远程桌面时发生AtBroker.exe错误的解决方法
- ZOJ-2008-一个最短路问题-(dijkstra+heap,spfa)
- Oracle 不同故障的恢复方案
- Jamendo开源在线音乐播放器源码分析(一)
- 【hdu】 Nightmare