C++ 11标准

C++11,也称为C++0x。为目前C++编程语言的最新正式标准(ISO/IEC 14882:2011)。它将取代第二版标准ISO/IEC 14882:2003(第一版ISO/IEC 14882:1998公开于1998年,第二版于2003年更新,分别通称C++98以及C++03,两者差异很小)。C++11包含了核心语言的新机能,并且拓展C++标准程序库,并且加入了大部分的C++ Technical Report 1程序库(数学上的特殊函数除外)。C++ 标准委员会计划在2010年8月之前完成对最终委员会草案的投票,以及于2011年3月3召开的标准会议完成国际标准的最终草案。最终于2011年8月12日公布,并于2011年9月出版。2012年2月28日的国际标准草案(N3376)是最接近于现行标准的草案(编辑上的修正)。此次标准为13年第一次重大修正。

#include <iostream>
using namespace std;
int main()
{
   int my_array[5] = {1, 2, 3, 4, 5};
   for(int x : my_array)
   cout<<x<<endl;
   }
   return 0;
}

当你看到 for (int x :my_array) 是不是感觉和 java 很像。没错啊,C++ 也可以这么玩的。

输出 的是

1

2

3

4

5

强大啊,这是 Range based for loop 特性,语文不好这个不好翻译。就叫做循环范围控制 特性!

正常 编译的话,系统返回这样的错误信息: range-based-for loops are not allowed in C++98 mode

新特点从gcc 4.60以后的版本都填加了支持,所以不需要升级到gcc 4.7.0版 也能应用C++11的新特点,而且C++兼容之前的标准。办法是在编译时加上参数 -std=c++0x