信息发布→ 登录 注册 退出

C++如何使用范围for循环(range-based for loop)_C++简化遍历的现代写法

发布时间:2025-11-13

点击量:
范围for循环简化容器遍历,语法为for (declaration : range),可直接访问元素;2. 适用于数组、vector等支持begin/end的容器。

在C++11及以后的标准中,引入了范围for循环(range-based for loop),它提供了一种简洁、安全的方式来遍历容器或数组中的每个元素,无需手动管理迭代器或下标。

基本语法

范围for循环的语法如下:

for (declaration : range) {
    // 循环体
}

其中:

  • declaration:声明一个变量,用来接收当前遍历到的元素。
  • range:要遍历的对象,比如数组、std::vector、std::array、std::string 等支持 begin() 和 end() 的容器。

遍历数组和标准容器

以下是一个遍历整型数组的例子:

int arr[] = {1, 2, 3, 4, 5};
for (int x : arr) {
    std::cout << x << " ";
}

输出结果为:1 2 3 4 5

对 std::vector 的遍历同样简单:

std::vector words = {"hello", "world", "cpp"};
for (const std::string& word : words) {
    std::cout << word << " ";
}

这里使用 const std::string& 可避免复制字符串,提升效率。

修改容器中的元素

如果想通过范围for循环修改原容器中的元素,必须使用引用:

std::vector nums = {10, 20, 30};
for (int& num : nums) {
    num *= 2;
}
// nums 变为 {20, 40, 60}

如果不加引用(&),循环中的变量只是副本,修改不会影响原数据。

注意事项与限制

范围for循环虽然方便,但也有使用限制:

  • 不能直接获取当前元素的索引。如需索引,应使用传统for循环或结合计数器。
  • 不适用于动态生成的数据流或指针指向的未知长度数组(除非是std::array或有begin/end支持)。
  • 在范围表达式为函数返回值时,注意对象生命周期,避免悬空引用。

基本上就这些。掌握范围for循环能让代码更清晰、少出错,是现代C++编程中推荐的遍历方式。

标签:# 遍历  # 更清晰  # 返回值  # 不加  # 如需  # 可直接  # 能让  # 适用于  # 也有  # 是一个  # c++  # 对象  # 指针  # 循环  # 字符串  # const  # 整型  # for  # Array  # String  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!