gpt4 book ai didi

c++ - 在迭代 C++ 容器时进行修改的通用解决方案?

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

有很多场合需要在迭代 C++ 容器时进行修改。

就像回调存储在 std::list 中一样,当遍历并调用这些回调时,可能需要修改 std::list

但这不是开箱即用的安全方法。是否有针对此类问题的通用解决方案?

最佳答案

有时我需要在迭代时从容器中移除项目。使用 c++11(删除返回下一个迭代器)你可以像这段代码那样做。

  std::vector<MyClass> vector;
std::vector<MyClass>::iterator it;
for(it=vector.begin();it!=vector.end();)
{
if(it->removeFromList())
{
it=vector.erase(it);
}
else
{
it->doSomething();
++it;
}
}

您想如何准确编辑容器?

关于c++ - 在迭代 C++ 容器时进行修改的通用解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40989870/

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