首页 >后端开发 >C++ >使用基于范围的 For 循环时可以从 C 向量中删除元素吗?

使用基于范围的 For 循环时可以从 C 向量中删除元素吗?

Linda Hamilton
Linda Hamilton原创
2024-11-28 17:41:14937浏览

Can You Remove Elements from a C   Vector While Using a Range-Based For Loop?

使用 C 11 范围循环迭代和修改向量

使用 C 11 基于范围的 for 循环遍历向量时,会出现一个常见问题:您可以在其中删除某个项目吗?循环?

基于范围的 For 循环的局限性

答案是否定的,因为基于范围的 for 循环设计用于一次访问容器的每个元素。如果需要修改容器、删除元素或执行非线性迭代,则应使用传统的 for 循环。

使用传统循环修改向量

要在迭代时从向量中删除项目,可以使用传统的 for循环:

for (auto it = inv.begin(); it != inv.end(); ++it) {
    // Do some stuff
    if (blah) {
        it = inv.erase(it);
        --it;  // Decrement iterator to avoid skipping an element
    }
}

传统循环的优点

传统循环比基于范围的 for 循环提供更多灵活性:

  • 您可以多次访问元素。
  • 您可以通过添加或删除来修改容器元素。
  • 您可以以非线性方式迭代容器,例如跳过或重新访问元素。

以上是使用基于范围的 For 循环时可以从 C 向量中删除元素吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn