【C++】 vector.erase()

函数原型

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

猜你喜欢

转载自blog.csdn.net/f156207495/article/details/82937853
今日推荐