stl迭代器失效
来源:互联网 发布:mac google搜索打不开 编辑:程序博客网 时间:2024/06/06 17:02
迭代器失效分三种情况考虑,也是非三种数据结构考虑,分别为数组型,链表型,树型数据结构。
数组型数据结构:该数据结构的元素是分配在连续的内存中,insert和erase操作,都会使得删除点和插入点之后的元素挪位置,所以,插入点和删除掉之后的迭代器全部失效,也就是说insert(*iter)(或erase(*iter)),然后在iter++,是没有意义的。解决方法:erase(*iter)的返回值是下一个有效迭代器的值。 iter =cont.erase(iter);
链表型数据结构:对于list型的数据结构,使用了不连续分配的内存,删除运算使指向删除位置的迭代器失效,但是不会失效其他迭代器.解决办法两种,erase(*iter)会返回下一个有效迭代器的值,或者erase(iter++).
树形数据结构: 使用红黑树来存储数据,插入不会使得任何迭代器失效;删除运算使指向删除位置的迭代器失效,但是不会失效其他迭代器.erase迭代器只是被删元素的迭代器失效,但是返回值为void,所以要采用erase(iter++)的方式删除迭代器。
注意:经过erase(iter)之后的迭代器完全失效,该迭代器iter不能参与任何运算,包括iter++,*iter。
阅读全文
0 0
- STL迭代器失效问题
- 有关STL迭代器失效
- STL迭代器失效问题
- STL迭代器失效问题
- STL迭代器失效问题
- STL迭代器失效问题
- STL迭代器失效
- STL 迭代器失效问题
- STL 迭代器失效情况
- STL迭代器失效
- [C++] STL迭代器失效
- STL之迭代器失效
- STL迭代器失效
- STL迭代器失效问题
- STL迭代器失效问题
- C++ STL 迭代器失效
- STL迭代器失效问题
- STL迭代器失效问题
- phoneX适配
- 国办公开办:30个省级政府初步建成网上政务服务平台
- Spark官方文档翻译思路与进度表
- easyUI的iframe子页面操作父页面元素
- 手机端rem布局详解(淘宝无限适配)
- stl迭代器失效
- loj6226「网络流 24 题」骑士共存问题(二分图最大点独立集,最小割)
- WinForm-SuspendLayout、ResumeLayout、PerformLayou——转载
- AS3:时间戳的转换
- NLP汉语自然语言处理原理与实践 9 NLP中的深度学习
- ${}和#{}的区别
- struts2-21常用标签解说
- 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!
- 实参和形参