gpt4 book ai didi

c++ - 在 for(-each) 自动循环中删除项目

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

在这样的 for 循环中使用 auto 变量时,有没有办法删除特定元素?

for(auto a: m_Connections)
{
if(something)
{
//Erase this element

}
}

我知道我可以说

for(auto it=m_map.begin() ...

for(map<int,int>::iterator it=m_map.begin() ...

并手动增加迭代器(并删除),但如果我能用更少的代码行来完成,我会更开心。

谢谢!

最佳答案

你不能。基于范围的循环使范围内的简单迭代变得更简单,但不支持使范围或其使用的迭代器无效的任何操作。当然,即使支持,您也无法在不访问迭代器的情况下有效地删除元素。

你需要一个老式的循环,按照

for (auto it = container.begin(); it != container.end();) {
if (something) {
it = container.erase(it);
} else {
++it;
}
}

或者 container.erase()std::remove_if 的组合,如果你喜欢那种东西的话。

关于c++ - 在 for(-each) 自动循环中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26524794/

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