如何将remove_if与erase一起使用

发布于 2024-12-17 10:57:40 字数 513 浏览 1 评论 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*/);
}

I would like to know how to remove an object from a list base on a condition.

After researching, this is what I got, but it still doesn't work!

So I would like to know how to use remove_if with erase.

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*/);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝眸 2024-12-24 10:57:40

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); });

std::list has a remove_if member function:

http://www.cplusplus.com/reference/stl/list/remove_if/

For your predicate you could either write a functor:

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));

Or use a lambda:

listA.remove_if([](const A& a) { return (a.x == 123); });
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文