我想知道如何根据条件从列表中删除对象。
经过研究,我得到了这个,但是还是不行!
所以我想知道如何使用带删除的remove_if
。
Class A
{
public:
A(int x,int y);
int x;
int y;
};
int main()
{
list<A> listA;
A lista1(123,32);
listA.push_back(lista1);
A lista2(3123,1233);
listA.push_back(lista2);
A lista3(123,4123);
listA.push_back(lista3);
//HERE HOW TO REMOVE LIST if x = 123?
listA.erase(remove_if(listA.begin(),listA.end(),/*REMOVE CRITERIA*/);
}
std::list
有一个 remove_if
成员函数:
http://www.cplusplus.com/reference/stl/list/remove_if/
对于您的谓词,您可以编写一个仿函数:
struct RemoveIfX
{
RemoveIfX(int x) : m_x(x) {}
bool operator() (const A& a)
{
return (a.x == m_x);
}
int m_x;
};
listA.remove_if(RemoveIfX(123));
或者使用 lambda:
listA.remove_if([](const A& a) { return (a.x == 123); });
我是一名优秀的程序员,十分优秀!