c++11支持foreach循环,使用前需要启用c++11支持,
启动C++ 11支持
在编译命令行添加参数
-std=c++11
或者
-std=c++0x
在Eclipse中的配置
使用IDE的,在ide的相关设置中启用c++11支持
如EclispeCDT中,右击项目,选择属性(Properties),
定位到如下设置
C/C++ Build -> Settings -> Tool Settings -> GCC C++ Compiler -> Dialect
如下图所示,在Language standard中选择ISO C++11 (-std=c++0x),然后点击Apply and Close,此时可能会提示需要重新编译整个项目,选择是,等待编译完毕之后,便可正常使用C++11的新特性了。
ForEach循环
语法模板如下,
for(元素类型 元素变量 : 可迭代的元素) {
循环体
}
遍历数组
int arr[] = { 1, 2, 3, 4, 5, 2, 3, 4 };
for (int it : arr) {
cout<<it<<",";
}
输出结果为:
1,2,3,4,5,2,3,4,
经测试,此种遍历数组的方式仅能够遍历静态定义的数组,且不允许通过一级指针来代替数组。
即,将数组传递给一个函数,在该函数中使用foreach函数会报错
使用new关键字动态创建的数组使用foreach会报错,等等。
除了遍历数组之外,foreach还可以遍历任何可迭代的容器或元素,如
遍历字符串
string s = "HelloWorld";
for (char it : s) {
cout << it << " ";
}
输出结果:
H e l l o W o r l d
遍历容器(以vector为例)
vector<int> v(3);
v[0]=1;
v[1]=2;
v[2]=3;
for(int it:v){
cout<<it<<",";
}
输出结果:
1,2,3,
PS:
实测对于容器对象,字符串对象等元素,可以自由地使用foreach循环而无数组的那些限制。
网友评论