C++容器范围遍历是一种简洁而直观的语法,用于遍历容器中的元素。它使用了C++11引入的范围-based for 循环语法,也称为范围遍历或区间遍历。
语法:
范围遍历的语法结构如下:
for (auto element : container) {
// 对每个元素进行操作
}
-
auto element
:定义一个自动类型推断的变量,用于存储容器中的每个元素。类型推断由编译器根据容器的类型自动确定。 -
container
:待遍历的容器,可以是向量(vector
)、列表(list
)、集合(set
)、映射(map
)等STL容器。
代码举例:
#include <iostream>
#include <vector>
#include <list>
#include <set>
#include <map>
using namespace std;
int main() {
// 创建一个向量容器
vector<int> myVector = {1, 2, 3, 4, 5};
// 创建一个链表容器
list<int> myList = { 1, 2, 3, 4, 5 };
// 创建一个集合容器
set<int> mySet = { 1, 2, 3, 4, 5 };
// 创建一个映射容器,键类型为字符串,值类型为整数
map<std::string, int> myMap = { {"a", 1}, {"b", 2}, {"c", 3} };
// 使用范围遍历输出向量容器中的元素
for (int num : myVector) {
cout << num << " ";
}
cout << endl;
// 使用范围遍历输出链表容器中的元素
for (int num : myList) {
cout << num << " ";
}
cout << endl;
// 使用范围遍历输出集合容器中的元素
for (int num : mySet) {
cout << num << " ";
}
cout << endl;
// 使用范围遍历输出映射容器中的键值对
for (const auto& pair : myMap) {
cout << "Key: " << pair.first << ", Value: " << pair.second << endl;
}
cout << endl;
return 0;
}
特点和用法:
-
简洁性:范围遍历语法非常简洁明了,使得代码更易读,减少了使用传统迭代器的复杂性。
-
自动类型推断:使用
auto
关键字可以使编译器根据容器元素的类型自动推断遍历的变量类型,减少了代码冗余和错误。 -
遍历顺序:范围遍历会按照容器内元素的顺序依次遍历,不同于传统的迭代器遍历可以控制遍历的方向。
-
只读遍历:范围遍历只能读取容器中的元素,无法修改容器内的元素,这一点与使用迭代器遍历略有不同。
-
适用范围:范围遍历适用于所有支持迭代器的STL容器,包括顺序容器(如
vector
、list
)、关联容器(如set
、map
)等。