解释一下C++11中的范围for循环(range-based for loop)及其用法。
C++11中引入了范围for循环(range-based for loop),它提供了一种更简洁的方式来遍历容器或数组中的所有元素。
基本语法:
for (declaration : range) {
// 循环体
}
- declaration: 定义一个变量,该变量将在循环的每次迭代中被赋予范围中的一个元素的值。这个变量可以是值类型,也可以是引用类型。
- range: 表示要遍历的范围,可以是数组、STL容器(如
std::vector
,std::list
,std::map
等)或任何支持begin()
和end()
成员函数的类型。
使用示例:
- 遍历数组:
int arr[] = {1, 2, 3, 4, 5}; for (int val : arr) { std::cout << val << " "; } // 输出: 1 2 3 4 5
- 遍历容器:
std::vector<int> vec = {10, 20, 30, 40, 50}; for (int& val : vec) { val *= 2; // 修改元素值 } for (const int val : vec) { std::cout << val << " "; } // 输出: 20 40 60 80 100
- 遍历map:
std::map<std::string, int> wordCount = {{"hello", 1}, {"world", 2}}; for (const auto& pair : wordCount) { std::cout << pair.first << ": " << pair.second << std::endl; } // 输出: // hello: 1 // world: 2
总结:
范围for循环是C++11中的一个非常实用的特性,它使得遍历容器和数组变得更加简单和直观。通过使用范围for循环,你可以避免直接操作迭代器或者管理索引,从而使代码更加清晰和易于维护。