cpp11的 foreach 循环
时间: 2023-06-01 19:02:48 浏览: 54
C++11引入了foreach循环,又称为范围for循环,它可以遍历一个范围内的元素,如数组、容器等。
foreach循环语法如下:
```cpp
for (auto &element : range) {
// 循环体
}
```
其中,`range`是一个范围,可以是数组、容器等,`element`是一个临时变量,用于遍历`range`中的元素,`&`表示`element`是一个引用,可以修改遍历到的元素。
例如,遍历一个数组:
```cpp
int arr[] = {1, 2, 3, 4, 5};
for (auto &x : arr) {
std::cout << x << " ";
}
// 输出:1 2 3 4 5
```
遍历一个vector:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
for (auto &x : vec) {
std::cout << x << " ";
}
// 输出:1 2 3 4 5
```
需要注意的是,如果`range`是一个常量,那么`element`需要使用常量引用:
```cpp
const int arr[] = {1, 2, 3, 4, 5};
for (const auto &x : arr) {
std::cout << x << " ";
}
// 输出:1 2 3 4 5
```
相关问题
cpp的foreach循环
C++11引入了foreach循环,也称为范围for循环。它是一种简单的循环结构,可以遍历一个数组,一个容器或者一个范围内的值。foreach循环可以让代码更加简洁和易读。下面是foreach循环的语法:
```
for (auto& element : container) {
// do something with element
}
```
其中,`container`是一个数组或者容器,`element`是`container`中的元素,`auto`关键字会根据`container`中元素的类型自动推断出`element`的类型。在循环中,可以使用`element`来访问`container`中的每个元素。
下面是一个使用foreach循环遍历数组的示例:
```c++
#include <iostream>
#include <vector>
int main() {
int arr[] = {1, 2, 3, 4, 5};
for (auto& x : arr) {
std::cout << x << " ";
}
std::cout << std::endl;
std::vector<int> vec = {6, 7, 8, 9, 10};
for (auto& x : vec) {
std::cout << x << " ";
}
std::cout << std::endl;
return 0;
}
```
输出:
```
1 2 3 4 5
6 7 8 9 10
```
注意,在foreach循环中,`element`是一个引用,因此可以修改`container`中的元素。如果不需要修改元素,可以将`auto&`改为`const auto&`,表示`element`是一个常量引用。
cpp的foreach优缺点
优点:
1. 简洁明了,代码易读易懂。
2. 可以遍历任何容器类型,包括数组、向量、列表、集合、映射等等。
3. 不需要手动管理迭代器,遍历容器时可以省略很多繁琐的代码。
4. 可以避免由于手动迭代引起的代码错误。
缺点:
1. 无法通过迭代器访问容器中的元素,只能通过引用或指针进行访问,可能会引起指针错误。
2. foreach循环不能修改容器中的元素,只能读取。
3. foreach循环不支持条件跳出,只能遍历完所有元素才能结束循环。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)