1. 程式人生 > >基於範圍的for迴圈(C++11)

基於範圍的for迴圈(C++11)

1、基於範圍的for迴圈(C++11)

for 語句允許簡單的範圍迭代:

int my_array[5] = {1, 2, 3, 4, 5};
// 每個陣列元素乘於 2
for (int &x : my_array)
{
    x *= 2;
    cout << x << endl;  
}
// auto 型別也是 C++11 新標準中的,用來自動獲取變數的型別
for (auto &x : my_array) {
    x *= 2;
    cout << x << endl;  
}

上面for述句的第一部分定義被用來做範圍迭代的變數,就像被宣告在一般for迴圈的變數一樣,其作用域僅只於迴圈的範圍。而在":"之後的第二區塊,代表將被迭代的範圍。

例項:

#include<iostream>  
#include<string>  
#include<cctype>  
using namespace std;  
  
int main()  
{  
    string str("some string");  
    // range for 語句  
    for(auto &c : str)  
    {  
        c = toupper(c);  
    }  
    cout << str << endl;  
    return 0;  
}

上面的程式使用Range for語句遍歷一個字串,並將所有字元全部變為大寫,然後輸出結果為:
SOME STRING