关于vector的erase操作后,迭代器失效问题
来源:互联网 发布:修复注册表软件 编辑:程序博客网 时间:2024/04/27 21:54
最近在写一个作业题,其中用到了vector的erase操作,不常用,不记得具体怎么回事了,偷个懒,网上搜了一下,直接照抄了,代码如下
但奇怪的是,运行的时候,每次到这段代码里面,都会直接弹出错误框,看样子是迭代器失效了,指到了不该指的地方
反复看代码,觉得vector为空的时候不可能调用,也不可能指向超过末尾的地方,郁闷半天。。。。只好广泛查阅。。。。
终于。。。找到了原因所在,哎,偷懒的代价啊偷懒的代价啊。。。。
错在不了解erase,网上那哥们儿估计也不了解。。。给出的代码还被人评为最佳答案。。。误人不浅
正确写法应该如下
原因是因为在erase操作后,原迭代器是相当于一个野指针的状态,对其++必定出错。
erase的返回值就是指向被删除的元素的下一个元素的迭代器,嚯嚯
还有分析称,其实非野,也会出BUG,vector在erase之后,长度会自动缩减,再++的话,会跳过一个元素,BUG,呵呵
- 关于vector的erase操作后,迭代器失效问题
- vector进行erase以后迭代器失效问题
- C++ vector容器erase操作后iterate失效真相
- 关于STL erase的iterator失效问题
- 关于STL erase的iterator失效问题
- STL vector的erase操作问题
- STL vector的erase操作问题
- STL vector的erase操作问题
- STL vector的erase操作问题
- STL vector的erase操作问题
- 关于vector的erase问题处理
- vector的erase问题
- 关于vector中使用erase删除元素后导致越界的问题
- 容器erase迭代器失效的问题
- 容器insert、erase操作引起迭代器失效问题
- 关于vector的erase使用
- STL中容器操作的迭代器失效-erase()函数陷阱
- 容器删除元素erase,迭代器失效的问题
- ASP.NET2.0 文本编辑器FCKeditor (推荐)
- ASP.NET2.0轻松搞定统计图表【月儿原创】
- Struts2源码阅读(五)_FilterDispatcher核心控制器
- 完成dhtmlxtree的彻底完成
- 找工作知识梳理-MySQL命令
- 关于vector的erase操作后,迭代器失效问题
- Struts2源码阅读(六)_ActionProxy&ActionInvocation
- 李开复:移动互联网机会最大 微博会现最大赢家
- 车型库项目图片批量上传功能
- Squid代理服务器的计费与流量控制
- 对oop的理解
- why design patterns
- note in using [Interface]
- Advice for developing program