STL vector的之erase应用iterator
来源:互联网 发布:oa软件开发平台 编辑:程序博客网 时间:2024/05/23 23:17
可能有不少人用Vector时,没太注意其iterator的用法,当Vector中的元素个数改变时,会引起iterator的一些error,看看下面代码,体会一下,会令你豁然开朗的
void main()
{
}
咋一看,这不是和上面提到的第一种方法一样吗?貌似没有问题啊。可是,要注意到,调用erase后,回到for循环又继续使用迭代器,并执行++运算。
好,让我们再温习一下erase函数的说明:
iterator erase ( iterator position );
iterator erase ( iterator first, iterator last );
现在我们只关注函数执行后的副作用和返回值。函数调用后使指向position和first之后的所有迭代器失效。返回值则是一个指向删除的最后一个元素后面的元素的迭代器。所以上面代码中的iter在调用erase后就无效了,我在VS2005中测试了,确实崩溃在++的操作上。
要解决这个问题,我们只需弃用原来的迭代器,使用返回值即可,代码如下:
//iter++;放在for循环外面
for(iter = member.begin(); iter != member.end();)
{
- STL vector的之erase应用iterator
- stl之vector的iterator坑
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。
- 关于STL erase的iterator失效问题
- 关于STL erase的iterator失效问题
- stl erase iterator
- stl之vector的应用
- vector的iterator进行erase操作后报错vector iterators incompatible
- STL vector的erase操作问题
- STL vector的erase操作问题
- STL vector的erase操作问题
- STL vector的erase操作问题
- STL Vector remove()和erase()的使用
- STL Vector remove()和erase()的使用
- STL 中vector的erase问题
- STL vector 的 erase(); 函数漏洞?
- STL Vector remove()和erase()的使用
- Git Stash用法
- typedef的作用
- vector对象的操作函数
- 我的App全栈之路(4)第一个接口的诞生
- IDl保存和恢复变量的方法
- STL vector的之erase应用iterator
- 为什么在C++使用pthread_cre…
- OpenCV函数cvFindContours
- hyperledger fabric0.6 结构分析(二)
- 静态成员函数为什么不能访问…
- typedef和#define的用法与区别&nbs…
- OpenCV打开摄像头 保存视频…
- 谈谈ConcurrentHashMap1.7和1.8的不同实现
- OpenCV_复制一个或多个ROI图像区域