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

C++ 11 标准中,除了可以沿用前面介绍的用法外,还为 for 循环添加了一种全新的语法格式,如下所示:

for (declaration : expression){
    //可迭代序列中的每个元素值会按序赋值给declaration中的变量,并存在拷贝或是引用的问题
}

  

其中,两个参数各自的含义如下:

declaration表示此处要定义一个变量,该变量的类型为要遍历序列中存储元素的类型。需要注意的是,C++ 11 标准中,declaration参数处定义的变量类型可以用 auto 关键字表示,该关键字可以使编译器自行推导该变量的数据类型。

expression表示要遍历的序列,常见的可以为事先定义好的普通数组或者容器,还可以是用 {} 大括号初始化的序列。

注:目标序列必须是可迭代的。

 

可以看到,同 C++ 98/03 中 for 循环的语法格式相比较,此格式并没有明确限定 for 循环的遍历范围,这是它们最大的区别,即旧格式的 for 循环可以指定循环的范围,而 C++11 标准增加的 for 循环,只会逐个遍历 expression 参数处指定序列中的每个元素。

posted @ 2021-09-01 18:28  默行于世  阅读(15)  评论(0编辑  收藏  举报