基于list循环删除元素,迭代器失效的问题详解
2016-12-25 09:43
501 查看
问题的关键是:在删除元素之前,将当前迭代器保存下来。当然,这里仅支持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循环删除元素,迭代器失效的问题详解全部内容了,希望大家多多支持脚本之家~
您可能感兴趣的文章:
相关文章推荐
- 关于list循环删除元素,迭代器失效的问题
- vector list map 遍历删除制定元素 防止迭代器失效
- STL中,deque插入或删除元素时,迭代器是否失效的问题
- 循环删除List中的元素的问题-两种方式(不一样的结果)
- 在List循环迭代时删除List中的元素问题。
- vector list map 遍历删除制定元素 防止迭代器失效的实例
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。
- List循环删除元素时错漏问题
- 如何处理C++删除容器中元素时导致的迭代器失效问题
- C++:在遍历/循环中删除map元素, 如何避免iter 迭代器失效
- C++:在遍历/循环中删除map元素, 如何避免iter 迭代器失效
- java集合循环中删除元素问题以List集合为例
- 删除容器中元素时的迭代器失效问题
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。
- 反向思维的妙处---解决正向循环删除元素的问题
- (转)STL之容器:选择时机,删除元素,迭代器失效
- STL 4: STL之容器:选择时机,删除元素,迭代器失效
- 如何使用迭代器iterator循环删除容器中的元素?
- 小心删除容器中元素时的迭代器失效
- 如何使用迭代器iterator循环删除容器中的元素?