vector::erase

本文通过三个测试案例详细介绍了C++ STL中vector容器的erase与remove函数的使用方法,erase函数用于直接删除指定元素,而remove则配合erase实现从容器中移除特定值的所有实例。
摘要由CSDN通过智能技术生成

转自http://www.cnblogs.com/xkfz007/archive/2012/08/17/2644061.html

 

erase的返回值是一个迭代器,而这个迭代器就是指向删除之前元素后的第一个元素

erase把要删除的指针指向了指针的下一个位置

 

remove,这个函数可以将迭代器范围内的等于某个值的元素“删除“

这里的删除是不改变容器的大小,只是将一些不满足条件的元素前移

这样的话保留的元素都移到了容器的前面,而remove正好就指向要删除的第一个元素,而后面的就是要删除的

然后执行erase操作

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=100010;
 4 vector<int> v;
 5 int x;
 6 int main(){
 7     puts("测试1:------");
 8     v.clear();
 9     v.push_back(2);
10     v.push_back(5);
11     v.push_back(5);
12     v.push_back(5);
13     v.push_back(5);
14     v.push_back(9);
15    // v.push_back(5);
16     x=5;
17     vector<int> ::iterator it;
18     for(it=v.begin();it!=v.end();it++) if(*it==x) v.erase(it);
19     for(it=v.begin();it!=v.end();it++) cout<<*it<<endl;
20 
21     puts("测试2:------");
22     v.clear();
23     v.push_back(2);
24     v.push_back(5);
25     v.push_back(5);
26     v.push_back(5);
27     v.push_back(5);
28     v.push_back(9);
29     v.push_back(5);
30     x=5;
31     for(it=v.begin();it!=v.end();) {
32         if(*it==x) v.erase(it);
33         else it++;
34     }
35     for(it=v.begin();it!=v.end();it++) cout<<*it<<endl;
36 
37     puts("测试3:------");
38      v.clear();
39     v.push_back(2);
40     v.push_back(5);
41     v.push_back(5);
42     v.push_back(5);
43     v.push_back(5);
44     v.push_back(9);
45     v.push_back(5);
46     x=5;
47     v.erase(remove(v.begin(),v.end(),x),v.end());
48     for(it=v.begin();it!=v.end();it++) cout<<*it<<endl;
49 }
View Code

 

转载于:https://www.cnblogs.com/yijiull/p/7420803.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值