gpt4 book ai didi

c++ - list::remove_if 等效

转载 作者:行者123 更新时间:2023-11-30 02:01:04 25 4
gpt4 key购买 nike

我想知道是否可以使用 remove_if 和 lambda 表达式来表示此表达式。

        std::list< gh::Actor* >::iterator astit = actors.begin();
while (astit != actors.end())
{
if( (*astit)->state == DELETE_STATE )
{
Actor* reference = *astit;
actors.erase(astit++);

delete reference;
}
else
{
++astit;
}
}

最佳答案

actors.erase(
std::remove_if( actors.begin(), actors.end(), []( gh::Actor*a )->bool {
if (!a || a->state == DELETE_STATE) {
delete a;
return true;
} else {
return false;
}
}),
actors.end()
);

顺便说一句,您几乎肯定不想使用 std::list。使用 std::vector - std::list 优于 std::vector 的情况非常狭窄。

关于c++ - list::remove_if 等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14513500/

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