范围 for 循环 (C++11 引入)

范围 for 循环(Range-based for loop)是 C++11 引入的一种简化循环语法,用于遍历容器、数组或其他可迭代对象中的所有元素。

1、基本语法

//基本语法
for (declaration : range_expression) {
// 循环体
}

  其中:

    declaration 是变量声明,表示当前元素

    range_expression 是要遍历的序列(如数组、容器等)

2、示例

#include <iostream>
#include <vector>
#include <array>

int main() {
// 遍历数组
  int arr[] = {1, 2, 3, 4, 5};
  for (int num : arr) {
    std::cout << num << " ";
  }
  std::cout << "\n";

  // 遍历vector
  std::vector<std::string> words = {"Hello", "World", "C++"};
  for (const auto& word : words) {
    std::cout << word << " ";
  }
  std::cout << "\n";

  // 遍历array
  std::array<double, 3> values = {1.1, 2.2, 3.3};
  for (auto val : values) {
    std::cout << val << " ";
  }
  std::cout << "\n";

  // 遍历字符串
  std::string str = "Range";
  for (char c : str) {
    std::cout << c << " ";
  }
  std::cout << "\n";

  return 0;
}

3、优点
   简洁性:比传统的 for 循环更简洁

   安全性:避免越界错误

   可读性:代码意图更明确

4、注意事项
   (1)默认情况下是值拷贝,如果元素较大,考虑使用引用:

for (const auto& elem : container) // 只读
for (auto& elem : container) // 可修改

  (2)范围 for 循环等价于以下传统 for 循环:

{
  auto && __range = range_expression;
  for (auto __begin = begin_expr, __end = end_expr; __begin != __end; ++__begin) {
    declaration = *__begin;
    // 循环体
  }
}

  (3)要使用范围 for 循环,类型必须满足:

    有 begin() 和 end() 成员函数,或者

    可以通过 ADL (Argument-Dependent Lookup) 找到 begin() 和 end() 函数

  范围 for 循环是现代 C++ 中遍历容器的首选方式,它使代码更简洁、更安全。

posted @ 2025-03-25 09:48  孤情剑客  阅读(331)  评论(0)    收藏  举报