【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;
}

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

	type iterable[n];
	for(type val:iterable) 	//type val = arr[i]
	{
		 // do something with val
	}

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

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

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

在这里插入图片描述

二、增强for用法

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

	for (char v : arr)
	{
		cout << v << "  ";
	}cout << endl;

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

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

输出结果为:

在这里插入图片描述

容器类型、数组类型

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

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

	char* p = new char[7] {"TianXi"};
	for (char v : p)
	{
		cout << v << "  ";
	}cout << endl;

这个例子中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;

三、总结

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

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

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

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


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天喜Studio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值