Skip to content

范围 for 循环(C++11)

一句话

一种无需手写迭代器就能遍历容器或数组所有元素的语法糖,让循环代码更简洁、更不易出错。

头文件

无(语言特性)

核心 API 速查

操作签名说明
只读遍历for (auto item : range)拷贝每个元素到 item
引用遍历for (auto& item : range)以左值引用访问元素(可修改)
常引用遍历for (const auto& item : range)避免拷贝且不可修改
初始化语句for (init; auto& item : range)C++20 起,循环前执行初始化
数组遍历for (auto item : arr)支持已知大小的原生数组

最小示例

cpp
#include <vector>
#include <iostream>
// Standard: C++11
int main() {
    std::vector<int> v = {1, 2, 3};
    for (const auto& x : v) {
        std::cout << x << ' ';
    }
    return 0;
}

嵌入式适用性:高

  • 零开销抽象:编译后与手写迭代器/下标循环完全等价,不产生额外运行时成本
  • 语法简洁可减少因下标越界或迭代器失效导致的错误
  • 配合 constexpr 数组在编译期遍历也非常实用
  • 注意:遍历返回临时对象的成员函数时需警惕生命周期问题(C++23 前为 UB)

编译器支持

GCCClangMSVC
4.63.02010

另见


部分内容参考自 cppreference.com,采用 CC-BY-SA 4.0 许可

基于 VitePress 构建