C++1.0也即C++98,是在1998年提出,2003年又提出了C++03,被称为TR1,Technical Report 1,只是一些实验性的东西,在2011年提出的C++11被称为C++2.0,具有里程碑式意义,要详细了解C++11,只看文字叙述帮助很小,需要结合实例才能有更深的理解。
C++ 11 标准是颠覆性的,该标准在 C++ 98 的基础上修正了约 600 个 C++ 语言中存在的缺陷,同时添加了约 140 个新特性,这些更新使得 C++ 语言焕然一新。C++14在C++11的基础上有些许微调,也包含在C++2.0内。
C++2.0新特性包括语言和标准库两个层面,标准库以头文件形式呈现。
- C++标准库的头文件不带.h,例如#include<vector>
- 新式的C语言标准库中头文件不带.h,例如#include<cstdio>
- 旧式C语言标准库中头文件带.h,目前依然可用,例如#include<stdio.h>
下面为C++11中新的标准库
#include <array>
#include <thread>
#include <type_traits>
#include <unordered_set>
#include <forward_list>
#include <tuple>
#include <regex>
using namespace std;
注:TR1中的组件现在已经全部移到std命名空间中
第一步首先确认编译器是否支持C++11,使用如下代码:
#include <iostream>
using namespace std;
/* 测试编译器对C++2.0的支持
* 在C++11中 #define __cplusplus 201103L
* 在C++98 & C++03中 #define __cplusplus 199711L
* 本例中会输出 201103
*/
int main(){
cout<<__cplusplus<<endl;
return 0;
}
语言层面的C++11有:
1.Variadic Templates
2.move Semantics
3.auto
4.Range-base for loop
5.Initializer list
6.Lambdas
标准库层面的C++11有:
1.type_traits
2.Unordered容器
3.forward_list
4.array
5.tuple
6.Con-currency
7.RegEx