gpt4 book ai didi

c++ - std::list remove_if 使用堆栈中的状态

转载 作者:行者123 更新时间:2023-11-28 02:44:52 36 4
gpt4 key购买 nike

我想从 std::list 中删除具有线性复杂度的元素(只遍历列表中的每个元素一次)。我需要根据堆栈中变量的值这样做:

int somevalue= 5;
int count=0;
mylist.remove_if(
[](MyStructure* s)
{
if (s->somefield==somevalue)
{
count++;
return true;
}
else
return false;
});

当然,这是行不通的——somevalue 是堆栈中的一个变量。

我尝试过使用模板函数,只是意识到(在对绑定(bind)成员函数表达式进行非法操作 之后)在这种情况下您不能真正使用它们。我知道我需要以某种方式关闭,所以我读过 this question , 但我还不能使用 C++0x 并且我没有为我的用例调整其他答案,因为我真的不明白 operator 是否有一些魔力>.

或者,是否有某种方法可以在给定迭代器当前位置的情况下从列表中删除元素(无需再次遍历整个列表来查找元素)?

最佳答案

就 lambda 表达式(c++11 特性)而言,您可以像这样按值捕获 somevalue:[somevalue](...) {... }

关于c++ - std::list remove_if 使用堆栈中的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24760915/

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