Range-Based For Loop(范围基于 for 循环)的使用方法

在 C++11 中,引入了一种新的循环结构——范围基于 for 循环(Range-Based For Loop)。这种语法旨在简化遍历容器(如 vectorlistarray 等)中的所有元素的过程,使代码更加简洁和易读。范围基于 for 循环允许开发者以更直观的方式遍历容器中的元素。与传统的 for 循环相比,它不再需要显式地使用索引或迭代器,使代码更加简洁和可读。

目录

范围基于 for 循环语法

使用方法扩展

使用 auto 关键字

使用引用来修改元素

使用常量引用

优点和缺点

优点

缺点

完整代码演示


范围基于 for 循环语法

基本语法如下:

for (type var : container) {
    // 使用 var 处理容器中的元素
}
  • type: 容器中元素的类型。
  • var: 每次迭代时的循环变量,表示当前容器中的元素。
  • container: 要遍历的容器。

使用方法扩展

使用 auto 关键字

当容器的元素类型复杂或难以手动指定时,可以使用 auto 关键字来自动推导类型:

std::vector ssr = {"are", "you", "ok"};
for (auto a : ssr)

使用引用来修改元素

如果希望在遍历时修改容器中的元素,可以使用引用来避免复制:

std::vector numbers = {1, 2, 3, 4, 5};
for (int& num : numbers) 
{
    num *= 2; 
}

使用常量引用

如果不希望修改元素,可以使用常量引用来确保元素不会被意外修改,并且可以避免不必要的复制开销:

for (const int& num : numbers) 

优点和缺点

优点
  1. 简洁性: 代码更加简洁,易于阅读,减少了手动管理迭代器的需求。
  2. 安全性: 减少了越界访问的风险,因为不需要使用索引。
  3. 灵活性: 可以遍历任何支持范围遍历的容器,包括 vectorlistarray 等。
缺点
  1. 性能考虑: 对于复杂类型的元素,使用范围基于 for 循环可能会导致性能问题,因为每次迭代时都会复制元素。(使用引用可以解决这个问题)
  2. 功能限制: 范围基于 for 循环不支持直接访问元素的索引,如果需要索引信息,仍需使用传统的 for 循环。

完整代码演示

#include 
int main() {
    std::vector num1 = {1, 2, 3, 4, 5};
    for (int num : num1) {
        std::cout << num << " "; // 输出每个元素
    }
    std::cout << std::endl;
    
    // auto 关键字自动推导类型
	std::vector ssr = {"are", "you", "ok"};
	for (auto a : ssr)
    {
        std::cout << a << " "; 
    }
    std::cout << std::endl;

    // 使用引用修改元素
    std::vector num2 = {1, 2, 3, 4, 5};
    for (int& num : num2) {
        num *= 2; 
    }
    //使用常量引用以避免复制
    for (const int& num : num2) {
        std::cout << num << " "; 
    }
    return 0;
}

你可能感兴趣的:(c++,c语言)