【C++】《C++ 17 入门经典》读书笔记 05----基于范围的 for 循环

一、概念:

基于范围的 for 循环迭代一个值范围中的所有值。

基于范围的 for 循环的一般形式中:

for (range_declaration : range_expression)
    loop statement or block;

range_declaration 标识了一个变量,它会被依次赋予范围中的每个值,在每次迭代都会赋予一个新值。

range_expression 表示数据源的范围。

二、示例说明:

int values [] {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
int total {};
for (int x : values)
    total _= x;

变量 x 在每次迭代中都会被赋予 values 数组中的一个值。它会被依次赋予 2、3、5等等。因此,循环不会在 total 中累积 values 数组中所有元素的和。

变量 x 是循环的局部变量, 在循环的外部不存在。

当然, 编译器知道 values 数组中元素的类型, 所以可以编写如下循环,让编译器确定 x 的类型:

for (auto x : values)
    total += x;

使用 auto 关键字会让编译器推断出 x 的正确类型。

auto 关键字在基于范围的 for 循环中很常见。这是迭代数组或其他范围中所有元素的一种非常好的方式。不需要知道元素的个数,循环机制会自动确定。

注意范围中的值被赋予范围变量 x , 这表示不能通过修改 x 的值来修改 values 数组的元素。存储在 x 中的值会在下一次迭代时被  values 数组的下一个元素值覆盖。

 


 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值