vector erase
2024-08-28 12:31:49
vector::erase 从指定容器删除指定的元素
两个重载:
iterator erase (iterator position);
删除指定位置position的元素,并返回删除元素的下一个元素的迭代器
iterator erase (iterator first, iterator last);
删除从first到last(不包过last)之间的元素 [first,last),并返回last位置迭代器 遍历删除元素方法:
1.
vector<int>array;
array.push_back();
array.push_back();
array.push_back();
array.push_back();
array.push_back();
array.push_back();
vector<int>::iterator itor;
for (itor = array.begin(); itor != array.end(); itor++){
if (*itor == ) array.erase(itor);
} for (itor = array.begin(); itor != array.end(); itor++)
{
cout << *itor << " ";
}
这种使用方法会内存错误,因为删除itor指定元素后,itor就编程野指针了,正确使用是itor重新赋值为erase返回值。
2.
vector<int>array;
array.push_back();
array.push_back();
array.push_back();
array.push_back();
array.push_back();
array.push_back();
vector<int>::iterator itor;
for (itor = array.begin(); itor != array.end(); itor++){
if (*itor == ) itor=array.erase(itor);
} for (itor = array.begin(); itor != array.end(); itor++)
{
cout << *itor << " ";
}
这个方式在删除连续元素会错误,结果发现是100 300 300 500,因为itor指向删除元素下一个元素后,itor++就跳过了删除元素的下一个元素。
3.正确使用方式
vector<int>array;
array.push_back();
array.push_back();
array.push_back();
array.push_back();
array.push_back();
array.push_back();
vector<int>::iterator itor;
for (itor = array.begin(); itor != array.end(); ){
if (*itor == ) itor=array.erase(itor);
else itor++;
}
for (itor = array.begin(); itor != array.end(); itor++)
{
cout << *itor << " ";
}
最新文章
- Alpha阶段第五次Scrum Meeting
- linux+php+apache web调用python脚本权限问题
- class-dump获取iOS私有api
- hdu 3518 Boring counting 后缀数组基础题
- sql根据&#39;/&#39;截取最后的字符串
- 设计模式之“Observer”注疏#01
- 懒人的小技巧, 批处理修改IP
- j2ee中的2是什么意思
- 【打CF,学算法——三星级】Codeforces Round #313 (Div. 2) C. Gerald&;#39;s Hexagon
- appium滑动操作(向上、向下、向左、向右)
- css 字体两端对齐
- docker(4)docker的网络,自定义网桥
- Nagios监控
- jmeter分布式压测(多台电脑一起压测)
- 理解vue之element-ui中的 <;template slot-scope=";scope";>;
- ScheduledExecutorService的两种方法
- 如何将baidu地图中的baidu logo 去掉
- bzoj 2119 股市的预测——枚举长度的关键点+后缀数组
- Openfiler能把标准x86/64架构的系统变成一个强大的NAS、SAN存储和IP存储网关
- Spark-RDD算子
热门文章
- mybatis mapper调用mysql存储过程
- 前端(五):JavaScript面向对象之内建对象
- 新手学习Java,该从哪里学起?
- JavaScript有限状态机实现方式
- jquery not() 方法
- Codeforces(Round #93) 126 B. Password
- world特殊控制符输入
- WinAPI: OpenProcess、GetExitCodeProcess、TerminateProcess (测试强制关闭 OICQ)
- 在Linux中安装redmine
- 二维数组中的查找(C++和Python实现)