【C/C++】C++primer习题9.26中删除元素问题
来源:互联网 发布:联想网络同传 编辑:程序博客网 时间:2024/05/18 02:31
将一个数组a[ ]={0,1,1,2,3,5,8,13,21,55,89}复制到一个vector容器中,使用单个迭代器参数版本的erase函数将vector中的偶数元素删除掉。
下面有2个删除元素的方法:
int a[] = {0,1,1,2,3,5,8,13,21,55,89};vector<int> vec(a,a+11);for(iter2;iter2!=vec.end();++iter2){if(*iter2%2==0){iter2 = vec.erase(iter2);--iter2;//这里会出错}}
这里会出错,当如果vec中的第一个元素被删除时,在执行完erase函数后,返回的iter2指向删除元素的后一个元素(此时这个元素为第一个元素),再执行--iter2会出现运行时错误。
正确的做法为:
vector<int>::iterator iter2 = vec.begin();while(iter2!=vec.end()){if(*iter2%2==0){iter2 = vec.erase(iter2);}else++iter2;}
0 0
- 【C/C++】C++primer习题9.26中删除元素问题
- c++primer 习题9.26
- C++Primer习题9.26
- c++primer 习题9.12
- c++primer 习题9.35
- c++primer 习题9.36
- c++primer 习题9.18
- c++primer 习题9.20
- c++primer 习题9.42
- c++primer 习题9.43
- C++Primer习题6.12
- C++primer习题6.20
- C++Primer 习题9.38
- C++Primer 习题9.39
- C++Primer习题9.40
- C++Primer习题10.9
- C++Primer习题6.12
- C++primer 习题6.22
- 哈市新建10个蔬菜设施园区 淡季蔬菜自给率达60%以上
- 怎么放代码
- C++中的累类!
- Struts2实现多文件上传
- CSDN的IP数据库太老了该更新了!2014.3
- 【C/C++】C++primer习题9.26中删除元素问题
- C++打印功能!
- c01
- 【翻译】Mathematical Analysis of Algorithms
- [tornado示例]最简单的表单输入和显示
- 把字符串按升序排列
- 精度计算(大数方面)
- 转:python的Theano库的安装
- 如何测试 Android 中的定时事件