一、介绍
范围循环:
这是C++11引入的一种新的循环语法,叫做范围for循环(Range-based for loop)。这种循环能更简洁地遍历容器(如字符串、向量、数组等)中的所有元素。
二、语法格式
语法格式如下:
for (declaration : range) {
// loop body
}
在上面的例子中:
for (char &c : line)
- `char &c`:这是元素的声明。`&`表示我们获取的是元素的引用,而不是其值的拷贝。这意味着在循环体内,我们可以直接修改`line`字符串中的字符。所以一般会添加const
- `line`:这是我们要遍历的范围,即字符串。
这个循环将会遍历字符串`line`中的每个字符,并将其存储在`c`中。由于使用了引用,所以对`c`的任何修改都会反映到`line`上。
二、案例
假如有一个整数向量,并且想打印出其中的每个元素:
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
for (int n : numbers) {
std::cout << n << " ";
}
return 0;
}
将输出:`1 2 3 4 5`
范围for循环提供了一种更简洁、易读的方式来遍历容器中的元素,而不需要使用迭代器或传统的索引循环。
三、语法注意事项
在范围for循环中,数组的名称不应该带有`[]`。
int arr1[] = {1, 2, 3, 4, 5};
for(int &n : arr1) {
n++;
}
为了确保`arr1`中的元素被修改,在`int n`前加了一个`&`符号,这样`n`就是数组元素的引用,而不是拷贝。