• 【C/C++】带你快速掌握 使用—增强for(范围for循环)


    创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
    主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
    🔥c++系列专栏:C/C++零基础到精通 🔥

    给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

    在这里插入图片描述

    c语言内容💖:

    专栏:c语言之路重点知识整合

    【c语言】全部知识点总结


    一、增强for概念

    通常在我们遍历数组的时候,常用的写法是:

    int main()
    {
    	char arr[7] = "TianXi";
    	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) 
    	{
    		cout << arr[i] << " ";  
    	}cout << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在C++新标准中,简化后的写法为:

    	type iterable[n];
    	for(type val:iterable) 	//type val = arr[i]
    	{
    		 // do something with val
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这种for循环就被称为增强for,也叫范围for循环

    增强for循环中,我们不需要再通过计算数组长度遍历数组,增强for循环会自动根据数组长度将数组中的每一个数据赋值给同类型的val,我们只需要输出val就遍历了数组

    iterable不止可以为数组,还可以是迭代的对象(比如支持begin、end操作的容器、string类型等)

    在这里插入图片描述

    二、增强for用法

    上面遍历数组的代码通过简化就可以写成这样:

    	for (char v : arr)
    	{
    		cout << v << "  ";
    	}cout << endl;
    
    • 1
    • 2
    • 3
    • 4

    char类型的v变量存储了arr数组中的每一位

    自动根据数组长度遍历数组

    输出结果为:

    在这里插入图片描述

    容器类型、数组类型

    增强for循环可以遍历支持迭代器的容器类型数组类型,例如std::vectorstd::liststd::arrayint[]

    指针类型既不是容器类型又不是数组类型,不能使用增强范围for,可以使用传统的for循环

    	char* p = new char[7] {"TianXi"};
    	for (char v : p)
    	{
    		cout << v << "  ";
    	}cout << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这个例子中p 是一个 char 类型指针,指向一个拥有7个元素的字符数组并且进行了初始化

    由于 p 是一个指针变量,而非容器类型,无法直接使用范围for循环进行遍历操作

    在这里插入图片描述

    如果要遍历字符串,不用char指针指向char数组,直接使用string字符串:
    (string字符串相关知识点:【C/C++】基础知识之string字符串)

    	char* p = new char[7] {"TianXi"};
    	//for(char v:p)     无法遍历
    	string str = "TianXi";
    	for (char v : str)
    	{
    		cout << v << "  ";
    	}cout << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    三、总结

    • 增强for循环可以遍历支持迭代器容器类型或数组类型,不支持指针类型

    使用增强for循环能够简化代码编写阅读,并且可以避免因手动控制迭代器而带来的错误。

    在需要进行下标访问修改元素等操作时还是传统for循环更方便,不适合使用增强for循环

    因此,使用哪种for循环,如何使用for循环,需要根据具体情况选择使用


    在这里插入图片描述

    大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
    大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)
  • 相关阅读:
    C++新特性笔记(2)
    【OpenGL】七、混合
    集成电路模拟版图入门——转行版图基础学习笔记(一)
    商城积分系统的设计方案(上)-- 需求分析
    shim error: docker-runc not installed on system
    JS模块化——CommonJS AMD CMD UMD ES6 Module 比较
    使用jstack工具排查JVM中CPU高消耗问题
    【Solution】商品秒杀之Redis缓存与MQ异步优化以及超卖一人一单等问题的解决
    PTA 7-6 数据类型判断(c++)
    【学习笔记】C#基础 - 由C/C++衍生出来的面向对象的编程语言
  • 原文地址:https://blog.csdn.net/TiSg0/article/details/131141790