vector 删除常见错误
来源:互联网 发布:国家二级c语言成绩 编辑:程序博客网 时间:2024/06/06 07:18
错误用法:
#include <vector> #include <iostream> using namespace std; vector<int> vect; vector<int>::iterator iter; int main(int argc, char* argv[]) { vect.push_back(1); vect.push_back(1); vect.push_back(3); vect.push_back(3); vect.push_back(4); vect.push_back(5); for(iter = vect.begin(); iter != vect.end(); iter++) { if (*iter == 3) iter = vect.erase(iter); } for(iter = vect.begin(); iter != vect.end(); iter++) { cout << *iter << endl; } system("pause"); return 0; }
目的:将vect中凡是等于3的项删除
输出结果:
1
1
3
4
5
问题:为什么3没有完全被删除
原因:vect.erase(iter)的作用是删除迭代器iter指向的元素,然后返回指向后一个元素的迭代器的引用。
解决办法:
- #include <vector>
- #include <iostream>
- using namespace std;
- vector<int> vect;
- vector<int>::iterator iter;
- int main(int argc, char* argv[])
- {
- vect.push_back(1);
- vect.push_back(1);
- vect.push_back(3);
- vect.push_back(3);
- vect.push_back(4);
- vect.push_back(5);
- for(iter = vect.begin(); iter != vect.end(); )
- {
- if (*iter == 3)
- iter = vect.erase(iter);
- else
- iter++;
- }
- for(iter = vect.begin(); iter != vect.end(); iter++)
- {
- cout << *iter << endl;
- }
- system("pause");
- return 0;
- }
0 0
- vector 删除常见错误
- 删除vector元素的错误方法!
- vector删除
- vector 错误
- Vector模板常见操作
- Vector常见操作
- vector的常见用法
- vector结构体 删除
- c++ vector删除元素
- vector erase()删除
- vector删除元素
- vector删除数据
- c++ vector删除元素
- 删除vector中的节点
- vector中循环删除
- vector 删除问题
- vector删除元素 演示
- vector删除 迭代器总结
- 黑马程序员——iOS面试题归类整理(附详细答案)——黑马 ios 技术博客
- ffmpeg解码基础
- 网络七层的功能
- 天声人語 20141221
- 胡博君谈Java中final的用法
- vector 删除常见错误
- 【leetcode 进制转换】Excel Sheet Column Title
- ctime库函数的使用
- 视频传输播放为解决的bug
- 在理论分析家和程序员眼中,html5是大不相同的
- 第17周-Problem E: 重复字符串
- 介绍NPTL
- Eclipse无法识别(手机)设备的解决方案
- 字符串的全排列和组合算法