范围for循环(range-based for loop)
时间: 2023-07-02 13:13:34 浏览: 63
范围for循环是C++11引入的一种新的循环语法,可以方便地遍历容器中的元素,语法格式如下:
```c++
for (element : container) {
// do something with element
}
```
其中,`element`表示容器中的元素,`container`表示容器本身,可以是数组、vector、set、map等STL容器或者自定义的类。在循环中,每次迭代时,`element`会依次取出`container`中的元素。
例如,我们可以使用范围for循环遍历一个vector:
```c++
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 遍历vector中的所有元素
for (int i : vec) {
std::cout << i << " ";
}
return 0;
}
```
输出结果为:
```
1 2 3 4 5
```
范围for循环可以简化代码,使得代码更加易读。需要注意的是,范围for循环只能用于遍历容器中的元素,不能用于遍历数组的下标。
相关问题
给我讲一下范围for循环
范围for循环(Range-based for loop),也称为foreach循环,是C++11引入的一种循环结构,用于遍历容器或其他可以迭代的对象的元素。它提供了一种更简洁、直观的方式来遍历序列。
范围for循环的语法如下:
```cpp
for (element_declaration : sequence) {
// 循环体
}
```
其中,`element_declaration` 是一个变量声明,用于接收序列中的元素值。`sequence` 是要遍历的序列,可以是数组、容器、字符串等支持迭代的对象。
下面是一个使用范围for循环遍历数组的示例:
```cpp
int numbers[] = {1, 2, 3, 4, 5};
for (int num : numbers) {
std::cout << num << " ";
}
```
在每次循环迭代中,`num` 依次被赋值为数组 `numbers` 中的元素值,并执行循环体。循环将输出数组中的所有元素。
除了数组,范围for循环还可以用于遍历容器类型,如 std::vector、std::list 等。它也可以与 auto 关键字一起使用,自动推断序列元素的类型。
需要注意的是,范围for循环是按值传递元素的副本进行迭代的,如果需要修改原始序列中的元素,可以使用引用来声明循环变量。例如:`for (int& num : numbers)`。
什么是基于范围的for循环
基于范围的for循环(Range-based for loop)是C++11引入的一种新的for循环形式,它可以自动遍历一个容器或者数组中的所有元素,而无需使用迭代器或者下标。使用基于范围的for循环可以使代码更加简洁易懂,减少了出错的可能性。例如,使用基于范围的for循环遍历一个数组可以写成如下形式:
```
int arr[] = {1, 2, 3, 4, 5};
for (int x : arr)
{
cout << x << " ";
}
```
其中,`int x` 表示遍历时每个元素的类型,`arr` 表示要遍历的数组,`x` 表示每次遍历时的元素。遍历的过程中,`x` 依次取到数组中的每个元素,输出结果为:1 2 3 4 5。