范围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 换成对应的数据类型。