函数原型
erase的函数原型有两种形式:
iterator erase(iterator position);
iterator erase(iterator first, iterator last);
- 第一个表示删除某一固定位置的元素
- 第二个可以删除从某个位置至另外一个 位置之间的元素
问题:如何删除vector中多个值为val1的元素
三种方法:
代码一:
for(vector<int>::iterator iter=veci.begin(); iter!=veci.end(); )
{
if( *iter == 3)
iter = veci.erase(iter);
else
iter ++ ;
}
代码二:
vector<int>::iterator itor2;
for(vector<int>::iterator iter=veci.begin(); iter!=veci.end(); )
{
if( *iter == 3)
{
itor2=iter;
veci.erase(itor2);
}
else
iter ++ ;
}
代码三:
#include <vector>
#include <iostream>
int main()
{
using namespace std;
int a[10] = {1, 1, 2, 3, 4, 5, 5, 2, 1, 23};
vector<int> pts(a, a + 10);
vector<int>::iterator it;
int val = 1;//删除值为1的全部元素
for(it = pts.begin(); it != pts.end(); it++)
{
if(*it == val)
{
while(it == pts.begin() && *it == val)
{
it = pts.erase(it);
}
if(*it == val)
{
it = pts.erase(it) - 1;
}
}
}
//显示
for(int i = 0; i < pts.size(); i++)
cout<<pts[i]<<endl;
return 0;
}
参考
https://www.cnblogs.com/zsq1993/p/5930229.html
https://blog.csdn.net/qq_34581491/article/details/51487239