当您想与结构的成员变量进行比较时,如何在结构的 std::list 上使用 remove_if
How to use remove_if on an std::list of structs when you want to compare to a member variable of the struct
我有一个 std::list
结构,我想根据某个成员变量是否匹配特定值从列表中删除项目。
我的结构和列表:
struct Foo
{
uint64_t PID;
uintptr_t addr;
};
std::list<Foo> FooList;
删除条目的代码:
uintptr_t Bar;
FooList.remove_if(???) // Remove when "Foo.addr == Bar";
我不确定如何在 remove_if()
函数中引用结构实例,任何帮助将不胜感激!
谢谢,
奈齐尔奇
list::remove_if
接受一个函数对象作为它的参数。您可以像这样使用内联 lambda 函数进行馈送:
FooList.remove_if([Bar] (auto &element) {
return element.addr == Bar;
});
编辑:注意如果Bar
是lambda外声明的局部变量,需要capture它通过 lambda 捕获列表(前导方括号)
中的副本(Bar
)或引用(&Bar
)
我有一个 std::list
结构,我想根据某个成员变量是否匹配特定值从列表中删除项目。
我的结构和列表:
struct Foo
{
uint64_t PID;
uintptr_t addr;
};
std::list<Foo> FooList;
删除条目的代码:
uintptr_t Bar;
FooList.remove_if(???) // Remove when "Foo.addr == Bar";
我不确定如何在 remove_if()
函数中引用结构实例,任何帮助将不胜感激!
谢谢,
奈齐尔奇
list::remove_if
接受一个函数对象作为它的参数。您可以像这样使用内联 lambda 函数进行馈送:
FooList.remove_if([Bar] (auto &element) {
return element.addr == Bar;
});
编辑:注意如果Bar
是lambda外声明的局部变量,需要capture它通过 lambda 捕获列表(前导方括号)
Bar
)或引用(&Bar
)