范围for,是一种基于“范围”的for语句,所谓范围:即是我们能够明确指出起始点和终点,位于起始点与终点之间的区域就是范围。比如vector,它具有begin和end,而在begin和end之间的区域,则是它所包含的元素。范围for的形式如下:
for (declaration : expression)
{
/* ... */
}
其中declaration是一个定义,它的类型是序列元素的类型,冒号后的表达式则是需要遍历的序列。范围for执行时,每迭代一次,declaration的内容都将被赋值为序列中的下一个元素,如此,在范围for内部,我们就可以执行一些我们需要的操作了(如果需要改变序列内部元素,则需要将declaration定义为引用)。
vector<int> vi;
for (int i = 0; i < 10; i++)
vi.push_back(i);
for (int i : vi)
{ cout << i << " " << ends; }
如上述代码,我们就可以将一个vector对象内部元素逐一输出了。但这里我们需要注意一个问题,范围for是不能用于为序列添加元素的,范围for的范围是需要能明确确定的,如果可以用它来添加元素,那这就前后矛盾了。
对于范围for,其实它不仅能作用于标准库容器,同样,它也能作用与数组,毕竟数组的范围也是明确的。
本文旨在介绍范围for最基本的用法,其实对于范围for,当搭配上另一种C++11特性之后,它会变得更方便。相关内容将在下文中呈现,敬请期待!