gpt4 book ai didi

c++ - 从 std::vector 连续删除的安全方法?

转载 作者:太空狗 更新时间:2023-10-29 23:47:44 26 4
gpt4 key购买 nike

我认为下面的代码可以工作,但是当目标小部件位于 vector 的末尾时它会崩溃。

for(std::vector<AguiWidget*>::iterator it = children.begin();
it != children.end(); ++it)
{
if((*it) == widget)
it = children.erase(it);
}

我希望它遍历并删除它找到的任何小部件实例。我知道这个方法是 N^2 但因为这是事件驱动的所以很好。我只是不知道为什么这会失败。当它出现时,“它”== 小部件。

谢谢

最佳答案

您可以使用 erase-remove 习惯用法来删除等于 widget所有 元素。

children.erase(remove(children.begin(), children.end(), widget), children.end());

关于c++ - 从 std::vector 连续删除的安全方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4175896/

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