【浅尝C++】范围for

在这里插入图片描述

🎈归属专栏:浅尝C++
🚗个人主页:Jammingpro
🐟记录一句:再写两篇博客就休息


文章前言:本篇文章简要介绍范围for,介绍每个小点时,都会附上对应的代码,如果可能的话。



传统for循环

在C++98中如果要遍历一个数组,可以按照以下方式进行👇

int printArray()
{
	int arr[] = {1, 2, 3};
	for(int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
		cout << arr[i] << endl;
}

sizeof(arr) / sizeof(arr[0])完全可以计算出数组的长度,让程序员重复书写i < sizeof(arr) / sizeof(arr[0])好像有点多余,不能让系统自动帮我们写吗?
在这里插入图片描述

范围for的语法

对于一个有范围的集合而言,由程序员来说明循环的范围是多余的,有时候还会容易犯错误。因此C++11中引入了基于范围的for循环。for循环后的括号由冒号“ :”分为两部分:第一部分是范围内用于迭代的变量,第二部分则表示被迭代的范围。👇

void printArray()
{
	int arr[] = {1, 2, 3};
	for(int num : arr)//如果不需要修改arr中的值,可以不适用引用类型
		cout << num << endl;
}

void doubleNum()
{
	int arr[] = {1, 2, 3};
	for(int& num : arr)//如果需要修改arr中的值,需要改为引用类型
		num *= 2;
}

上面的代码中,范围for的:前的变量类型可以使用auto进行自动类型推导,这样使用会更方便[关于auto关键字的介绍👉传送门]
注意:与普通循环类似,可以用continue来结束本次循环,也可以用break来跳出整个循环。

范围for的使用条件

for循环迭代的范围必须是确定的。对于数组而言,就是数组中第一个元素和最后一个元素的范围;对于类而言,应该提供begin和end的方法,begin和end就是for循环迭代的范围。
注意:以下代码就有问题,由于数组在传递给函数时被转换为指针,而指针不具备容器的特性,因此无法进行范围for循环。👇

void printArray(int arr[])
{
	for(auto& num : arr)
		cout << num << endl;
}

简而言之,在将数组传递给上述函数的时候,即使在函数内使用sizeof(arr) / sizeof(arr[0])也无法计算出原数组的长度。


文章结语:这篇文章对C++中的范围for进行了简要的介绍。
🎈欢迎进入浅尝C++专栏,查看更多文章。
如果上述内容有任何问题,欢迎在下方留言区指正b( ̄▽ ̄)d

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值