# 範圍型 `for` 迴圈 ## **1. 什麼是範圍型 `for` 迴圈?** 範圍型 `for` 迴圈(Range-based for loop)是 C++11 引入的語法,讓遍歷**陣列**或**容器**(如 `vector`、`map`)變得easy許多。 ## **2. 基本語法** ```cpp for (elementType variable : container) { // 迴圈內部操作 } ``` - `elementType`:元素的類型。如 `int a[10];` 的 `int` - `variable`:每次迴圈會取得容器內的一個元素。就是一個空變數 - `container`:需要遍歷的容器(如陣列、`vector`)。 容器的**指標**(這裡各位可能會不理解,但是別緊張,pointers講義中會詳細介紹) ## **3. 範例:遍歷Array(陣列)** ```cpp= #include <iostream> using namespace std; int main() { int arr[] = {1, 2, 3, 4, 5}; for (int i : arr) { cout << i << " "; } return 0; } ``` **輸出:** ``` 1 2 3 4 5 ``` ## **4. 遍歷 `vector`** ```cpp= #include <iostream> #include <vector> using namespace std; int main() { vector<int> vec = {10, 20, 30, 40, 50}; for (int num : vec) { cout << num << " "; } return 0; } ``` **輸出:** ``` 10 20 30 40 50 ``` ## **5. 使用 `&` 來修改元素** 這是 `reference`,其實我在思考要不要把這篇放到 `pointers` ```cpp= #include <iostream> #include <vector> using namespace std; int main() { vector<int> vec = {1, 2, 3, 4, 5}; for (int &num : vec) { num *= 2; } for (int num : vec) { cout << num << " "; } return 0; } ``` **輸出:** ``` 2 4 6 8 10 ``` ## **6. 使用 `const` 保持唯讀** ```cpp= for (const int &num : vec) { cout << num << " "; } ``` 這樣 `num` 只能讀取數值,**不能修改**。 之前有提到在變數宣告時加上 `const` 就表示該變數不能修改,這裡也是一樣的道理。 ## **7. 適用於 `map`** 可以去看看 `map` 的講義喔!! ```cpp= #include <iostream> #include <map> using namespace std; int main() { map<string, int> scores = { {"Alice", 90}, {"Bob", 85}, {"Charlie", 95} }; for (const auto &pair : scores) { cout << pair.first << ": " << pair.second << endl; } return 0; } ``` `auto` 是一種自動判別資料型態的東東,適合用於很多地方。 **輸出:** ``` Alice: 90 Bob: 85 Charlie: 95 ``` ## 小結 這些就是他運作的原理和範例,其實我在思考要不要把它擺到指標後面....