c++迭代器失效
来源:互联网 发布:淘宝美工学院 编辑:程序博客网 时间:2024/05/13 10:39
一般来讲,如果在程序中对vector中的元素做了修改,添加或者删除元素之后,迭代器就会失效,这时候就不要使用迭代器了 或者 只需插入后重新把迭代器定位好即可。
void vectorTest1(){vector<int> container;for (int i = 0; i < 10; i++){container.push_back(i);}vector<int>::iterator iter;for (iter = container.begin(); iter != container.end();iter++){if (*iter > 3){iter = container.erase(iter);//break;}}for (iter = container.begin(); iter != container.end(); iter++){cout<<*iter<<endl;}}上面的这段代码就是因为在erase掉迭代器,使其失效后,仍然对其做自增操作。
而但是erase方法可以返回下一个有效的iterator。所以,可以采取
list,map等也是类似的道理,总之记住本文开头的那句话就木有问题了。
void vectorTest(){ vector<int> container; for (int i = 0; i < 10; i++) { container.push_back(i); } vector<int>::iterator iter; for (iter = container.begin(); iter != container.end(); ) { if (*iter > 3) iter = container.erase(iter); //erase的返回值是删除元素下一个元素的迭代器 else{ iter++; } } for (iter = container.begin(); iter != container.end(); iter++) { cout<<*iter<<endl; }}
list,map等也是类似的道理,总之记住本文开头的那句话就木有问题了。
0 0
- [C++] STL迭代器失效
- 【C++】迭代器的失效
- ctrl +c失效情况
- 迭代器失效
- 迭代器失效
- 迭代器失效
- 迭代器失效
- 迭代器失效
- 迭代器失效
- 迭代器失效
- 迭代器失效
- 迭代器失效
- 迭代器失效
- 迭代器失效
- 迭代器失效
- 迭代器失效
- C++迭代器失效: 典型的迭代器失效.
- 迭代器失效小结
- close() was never explicitly called on database 和 database is locked 错误原因
- const_cast、static_cast、reinterpret_cast用法(笔记)
- Android操作HTTP实现与服务器通信
- [IOS]Tag使用相关(UIButton)
- 基础练习 数列排序
- c++迭代器失效
- java网络编程:基于UDP的网络编程
- 惊喜中有点郁闷
- HDU 1215--七夕节
- 顺序表
- 链表
- 顺序栈
- 为何img、input等内联元素可以设置宽、高
- 链栈