码迷,mamicode.com
首页 > 编程语言 > 详细

C++11 新特性(6) 基于范围的for循环

时间:2014-08-19 22:28:05      阅读:413      评论:0      收藏:0      [点我收藏+]

标签:c++11   c++0x   遍历   

C++11中添加了一项基于范围的for循环,这可以省却我们很多的代码量。

来自维基百科的解释:http://zh.wikipedia.org/wiki/C++0x#.E5.80.99.E9.81.B8.E8.AE.8A.E6.9B.B4

Boost C++ 定义了许多"范围 (range) "的概念。范围表现有如受控制的列表 (list),持有容器中的两点。有序容器是范围概念的超集 (superset),有序容器中的两个迭代器 (iterator) 也能定义一个范围。这些概念以及操作的算法,将被并入 C++11 标准程序库。不过 C++11 将会以语言层次的支持来提供范围概念的效用。

for 述句将允许简单的范围迭代:

int my_array[5] = {1, 2, 3, 4, 5};
for (int &x : my_array)
{
  x *= 2;
}

上面 for 述句的第一部份定义被用来做范围迭代的参数,就像被声明在一般 for 循环的参数一样,其作用域仅只于循环的范围。而在":"之后的第二区块,代表将被迭代的范围。这样一来,就有了能够允许 C-style 数组被转换成范围概念的概念图。这可以是 std::vector,或是其他符合范围概念的对象。


基于范围的for循环在普通的数组中的应用:

#include <iostream>
using namespace std;
int main()
{
	int arr[10]{1,2,3,4,5,6,7,8,9,10};
	for(int i:arr){
		cout<<i<<" ";
	}
	cout<<endl;


}
运行结果:

bubuko.com,布布扣

在STL 容器中遍历时更加方便。

#include <iostream>
#include <vector>
using namespace std;
int main()
{
	vector<int>	arr{1,2,3,4,5,6,7,8,9,10};
	for(int &i:arr){
		cout<<i<<" ";
	}
	cout<<endl;


}
结果:

bubuko.com,布布扣

有了这个,遍历范围内的元素的时候就会非常的方便了。





C++11 新特性(6) 基于范围的for循环,布布扣,bubuko.com

C++11 新特性(6) 基于范围的for循环

标签:c++11   c++0x   遍历   

原文地址:http://blog.csdn.net/qq844352155/article/details/38689063

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!