gpt4 book ai didi

c++ - 如何将 remove_if 与删除一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 15:26:00 27 4
gpt4 key购买 nike

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

经过研究,我得到了这个,但是还是不行!

所以我想知道如何使用带删除的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); });

关于c++ - 如何将 remove_if 与删除一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8220032/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com