范圍for(range-based for)是C++的一種循環結構, 是在 C++11 這個標準中引入的,這種類型的for循環使得遍歷數組、容器中的元素更加簡便和直觀。
一、范圍for語法
for ( 類型 變量名 : 數組名 )
語句 //多條語句需要加?括號
示例:打印數組
#include <iostream>
using namespace std;
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };for (int e : arr){cout << e << " ";}return 0;
}
上面代碼中的 for 就是 范圍 for ,代碼的意思是將 arr 數組中的元素,依次放在 e 變量中,然后
打印 e ,直到遍歷完整個數組的元素。這里的 e 是一個單獨的變量,不是數組的元素,所以對 e 的修改,不會影響數組。
#include <iostream>
using namespace std;
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };for (int e : arr){e=0;//不會改變數組元素的值}for (int e : arr){cout << e << " ";}return 0;
}
需要注意的是范圍 for 是對數組中所有元素進行遍歷的,但在平時使用中,可能只需要遍歷數組中指定個數的元素,這樣范圍 for 就不合適了。
二、auto 關鍵字
auto 的主要用途是讓編譯器自動推導出變量的類型的,比如:
#include <iostream>
using namespace std;
int main()
{auto a = 3.14;auto b = 100;auto c = 'x';return 0;
}
使用VS進行調試我們就能發現編譯器已經自動推導出a,b,c這三個變量的類型。
當我們 使用? auto 類型,上面的范圍 for 也可以這樣寫:
#include <iostream>
using namespace std;
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };for (auto e : arr) //auto能夠自動推導數組中每個元素的數據類型,在數組范圍內遍歷打印元素{cout << e << " ";}return 0;
}
范圍 for 中 e 前面的類型可以是 auto 關鍵字,當你不知道數組中放什么類型的時候,可以使用auto 作為類型, auto 在范圍 for 中很常用。如果明確的知道數組元素的數據類型,也可以將
auto 換成對應的數據類型。