#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); //继续查找
}
*/
}