📅  最后修改于: 2023-12-03 15:37:48.626000             🧑  作者: Mango
基于范围的for循环是C++11引入的一个新特性,它允许程序员使用一种更简洁的方式遍历一个序列容器,如vector 和list。它所需的代码量更少也更容易理解,而且可以避免一些出错的情况。
基于范围的for循环使用关键字“auto”来推导迭代器类型,并使用关键字“:”来分离迭代器范围和循环体。以下是基于范围的for循环的语法:
for (auto element : container)
{
statement;
}
其中,“auto”用于推导迭代器的类型,“element”是一个临时变量名,用于存储当前容器中的值,“container”是要迭代的容器,循环体中的“statement”则是需要执行的语句。
以下是一个基于范围的for循环的示例代码:
#include <iostream>
#include <vector>
using namespace std;
int main ()
{
vector<int> numbers = {10, 20, 30, 40, 50};
// 使用基于范围的for循环遍历vector中的元素
for (auto element : numbers)
{
cout << element << endl;
}
return 0;
}
在此代码中,我们使用vector存储整数,然后使用基于范围的for循环遍历每一个元素并输出。输出结果如下:
10
20
30
40
50
基于范围的for循环适用于所有的容器类型,包括vector、list、deque、map和set等。这一特性也支持普通的数组和字符串,如下所示:
#include <iostream>
#include <string>
using namespace std;
int main ()
{
int array[] = {10, 20, 30, 40, 50};
// 使用基于范围的for循环遍历数组中的元素
for (auto element : array)
{
cout << element << endl;
}
string name = "C++";
// 使用基于范围的for循环遍历字符串中的字符
for (auto character : name)
{
cout << character << endl;
}
return 0;
}
输出结果:
10
20
30
40
50
C
+
+
基于范围的for循环比传统的for循环更灵活、更简洁。但它也存在一些限制,例如使用基于范围的for循环时如果需要对容器进行修改则需要使用引用。因此,在使用此特性时要注意语句块中不能修改迭代器。