我有一個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(),任何幫助將不勝感激!
謝謝,
奈齊爾希
uj5u.com熱心網友回復:
list::remove_if接受一個函式物件作為它的引數。您可以使用這樣的行內 lambda 函式進行輸入:
FooList.remove_if([Bar] (auto &element) {
return element.addr == Bar;
});
編輯:請注意,如果Bar是在 lambda 外部宣告的區域變數,則需要通過 lambda捕獲串列中的復制(Bar)或參考(&Bar)捕獲它(前導方括號)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/463690.html
