0

我想知道如何根据条件从列表中删除对象。

经过研究,这是我得到的,但它仍然不起作用!

所以我想知道如何使用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*/);
}
4

1 回答 1

7

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); });
于 2011-11-21T23:38:11.433 回答