解释一下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()成员函数的类型。

使用示例:

  1. 遍历数组:
    int arr[] = {1, 2, 3, 4, 5};
    for (int val : arr) {
       std::cout << val << " ";
    }
    // 输出: 1 2 3 4 5
    
  2. 遍历容器:
    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
    
  3. 遍历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循环,你可以避免直接操作迭代器或者管理索引,从而使代码更加清晰和易于维护。

发表评论

后才能评论