baixs19872012-03-09 13:20
#include <queue>
#include <iostream>
#include <algorithm>
using namespace std;
class CT
{
public:
CT(int x):m(x), n(x+1){}
void Fun(void)
{
cout << "Fun::Fun()" << endl;
};
bool operator== (const CT& c)
{
return this->m == c.m;
}
bool operator> (const CT& c)
{
return this->m > c.m;
}
bool operator>= (const CT& c)
{
return this->m >= c.m;
}
int m;
int n;
};
template <typename T>
class RemoveItem
{
private:
T m_tValue;
public:
RemoveItem(T pValue) : m_tValue(pValue){ }
bool operator () (T Value)
{
//return Value == m_tValue;
//return Value >= m_tValue;
return Value > m_tValue;
}
};
int main()
{
deque<CT> que;
CT a1(1);
que.push_back(a1);
CT a2(2);
que.push_back(a2);
CT a3(3);
que.push_back(a3);
CT a4(4);
que.push_back(a4);
CT a5(5);
que.push_back(a5);
que.push_back(a5);
que.push_back(a5);
CT a6(6);
que.push_back(a6);
CT a7(7);
que.push_back(a7);
a5.n--;
deque<CT>::iterator it = remove_if(que.begin(), que.end(), RemoveItem<CT>(a5));
que.erase(it, que.end());
return 0;
}