Contents

C++:基于范围的 for 循环

本文采用知识共享署名 4.0 国际许可协议进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,可适当缩放并在引用处附上图片所在的文章链接。

基于范围(range-based)的for循环

简介

简化一种常见的循环任务:对数组(或容器类,如vector和array)的每个元素执行相同的操作.
语法形式:

1
2
3
4
for(declaration:expression)
{
	statement
}

其中:
expression部分表示一个对象,用于表示一个序列。
declaration部分负责定义一个变量,该变量将被用于访问序列中的基础元素。
每次迭代,declaration部分的变量会被初始化为expression部分的下一个元素值。

基于范围的for循环的特点

  • 和普通循环一样,也可以采用continue跳出循环的本次迭代。
  • 用break来终止整个循环

使用

示例:

1
2
3
double prices[5]={4.99, 2.33, 5.86, 6.42, 4.51};
for (double x : prices)
      cout<<x<<std::endl;

其中,x表示数组prices的第一个元素。显示第一个元素后,不断执行循环,而x依次表示数组的其他元素。

要修改数组的元素,需要使用不同的循环变量语法:

1
2
for (double &x : prices)
      x=x*0.80;  //20% off sale

符号&表明x是一个引用变量

结合使用基于范围的for循环和初始化列表

1
2
3
for (int x : {3, 5, 2, 8, 9})
      cout<<x<<" ";
cout<<'\n';