gpt4 book ai didi

C++在遍历列表时从列表中删除

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:46 24 4
gpt4 key购买 nike

我有一个 std::listBananas,我想去掉坏的。是否有任何相对简单的方法来执行以下伪代码?

foreach(Banana banana in bananaList)
{
if(banana.isBad()) bananaList.remove(banana);
}

(从 C# 和 Java 过渡到 C++ 是一条崎岖不平的道路。)

最佳答案

bananaList.remove_if(std::mem_fun_ref(&Banana::isBad));

请注意,尽管您可能应该使用 std::vector 而不是 std::list -- vector 在 99.9% 时表现更好个案,并且更容易处理。

编辑:如果您使用 vector , vector 没有 remove_if 成员函数,所以您必须在命名空间 std 中使用普通的 remove_if:

bananaVector.erase(
std::remove_if(bananaVector.begin(), bananaVector.end(), std::mem_fun_ref(&Banana::isBad)),
bananaVector.end());

关于C++在遍历列表时从列表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3284784/

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