首页 > 后端开发 > C++ > 如何选择正确的 C 11 基于范围的 `for` 循环语法?

如何选择正确的 C 11 基于范围的 `for` 循环语法?

Patricia Arquette
发布: 2024-12-16 05:55:09
原创
496 人浏览过

How to Choose the Right C  11 Range-Based `for` Loop Syntax?

了解 C 11 中基于范围的 for 语法

C 11 中基于范围的 for 循环提供了用于迭代容器的简化语法。根据您打算观察还是修改容器的元素,语法会有所不同。

对于观察元素

要观察元素而不修改它们,建议的语法是:

for (const auto& elem : container)
登录后复制

此语法通过 const 引用捕获元素,避免在对象昂贵的情况下进行不必要的复制copy.

用于修改元素

如果需要就地修改元素,语法为:

for (auto& elem : container)
登录后复制

此语法捕获元素通过非常量引用,允许您在循环体中修改它们。

特殊情况:代理迭代器

但是,对于使用代理迭代器的容器(例如 std::vector),需要不同的语法来修改元素:

for (auto&& elem : container)
登录后复制

This语法使用“&&”类型修饰符来正确使用代理

摘要

  • 对于观察元素,如果复制成本低廉,请使用 for (const auto& elem : container) 或 for (auto elem : container) 。
  • 要修改元素,请使用 for (auto& elem : 容器) 或 for (auto&& elem : 容器)用于代理迭代器。
  • 在通用代码中,更喜欢使用 const 引用语法进行观察,使用 auto&& 进行修改,以优雅地处理标准和代理迭代器。

以上是如何选择正确的 C 11 基于范围的 `for` 循环语法?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板