首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++11 新特性 (六):基於範圍的 for 迴圈詳解

     編輯:C++ 入門

語法


for (type &var : container) { /* ... */ }
  • type:元素類型 (可用 auto 推導)。
  • &var:引用 (若需修改元素或避免拷貝);值傳遞則不加 &。
  • container:支援範圍 for 的物件:陣列、STL 容器 (有 begin()/end())、初始化列表等。

陣列範例


int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for (int x : arr) cout << x << ' '; // 輸出 1..10
// 修改元素
for (int &x : arr) x *= 2;

STL 容器範例


vector vec = {1,2,3,4,5};
for (auto &x : vec) cout << x << ' ';
// 也適用於 map, set, list 等
map mp = {{"a",1},{"b",2}};
for (auto &kv : mp) cout << kv.first << ':' << kv.second << '\n';

底層原理

編譯器展開為迭代器循環:


auto && __range = container;
for (auto __begin = begin(__range), __end = end(__range); __begin != __end; ++__begin) {
    type &var = *__begin;
    // loop body
}

故容器必須提供 begin() 和 end() (或 ADL 找到自由函數)。

優點

  • 語法簡潔,減少迭代器/下標錯誤。
  • 支援 const 容器、臨時對象 (如 for (int x : {1,2,3}))。
  • 配合 auto 類型推導極其方便。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved