vector查找指定元素并删除

#include "stdafx.h"
#include "iostream"
#include "vector"
using namespace std;

int main()
{

	vector<int> NumberArray;
	NumberArray.push_back(1);
	NumberArray.push_back(1);
	NumberArray.push_back(2);
	NumberArray.push_back(2);

	int iFind = 1;
	vector<int>::iterator it = find(NumberArray.begin(), NumberArray.end(), iFind); //第一次查找
	while (it != NumberArray.end())  //判断是否找到
	{
		it = NumberArray.erase(it); //找到了删除  并 移动 it  指向下一个位置   
									//错误写法: NumberArray.erase(it); it++;  //原因vector中元素被删除之后it已经失效,不能进行++操作
		it = find(it, NumberArray.end(), iFind); //继续查找
	}

	return 0;
    /* //类比较重写==运算符即可
	class MyClass
	{
	public:
		MyClass(int a,int b )
		{
			_a = a;
			_b = b;
		}
		~MyClass()
		{

		}

		bool operator==(MyClass Tmp)
		{
			if ( _a == Tmp._a && _b == Tmp._b )
			{
				return true;
			}
			return false;
		}

	private:
		int _a;
		int _b;
	};

	vector<MyClass> MyClassArray;
	MyClassArray.push_back(MyClass(1,1));
	MyClassArray.push_back(MyClass(1, 1));
	MyClassArray.push_back(MyClass(1, 2));
	MyClassArray.push_back(MyClass(2, 1));

	MyClass mFind = MyClass(1, 1);
	vector<MyClass>::iterator itTmp = find(MyClassArray.begin(), MyClassArray.end(), mFind); //第一次查找

	while (itTmp != MyClassArray.end())  //判断是否找到
	{
		itTmp = MyClassArray.erase(itTmp); //找到了删除  并 移动 it  指向下一个位置   
									//错误写法: NumberArray.erase(it); it++;  //原因vector中元素被删除之后it已经失效,不能进行++操作
		itTmp = find(itTmp, MyClassArray.end(), mFind); //继续查找
	}
    */
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值