什么是C++11C++11曾被称为C++0x,是对当前C++语言的扩展和改版。功能,而且还扩展了C++标准库(STL),并合并了大部分C++技术报告1(TR1)库(特殊数学函数除外)。C++11包含了大量的新特性:包括lambda表达式、类型推导关键字auto、decltype,以及对模板的大量改进。本文将对C++11的上述新特性进行简要说明,让大家快速了解C++11在祈求C++易用性方面的巨大作用。如果觉得这篇文章的排版不是很舒服,可以查看我的PDF文档:百度网盘链接C++11引入了新的关键字auto。第一个功能是自动类型推导。变量的数据类型在初始化表达式中推断。通过auto的自动类型推导,可以大大简化我们的编程工作。其实auto其实是在编译的时候推导出变量的类型的,所以不会对程序的运行效率产生不利影响。另外,auto好像不影响编译速度,因为编译的时候需要推右边,然后判断是否匹配左边。autoa;//错误,auto使用初始化表达式进行类型推导,如果没有初始化表达式,则无法确定a的类型autoi=1;autod=1.0;autostr="你好世界";autoch='A';autofunc=less();向量iv;autoite=iv.begin();autop=newfoo()//自定义类型的类型推导auto不仅有上面的应用,在模板中也大显身手,比如在下面这个例子中处理产品的例子中,如果不使用auto,你必须声明模板参数Product:templatevoidprocessProduct(constCreator&creator){Product*val=creator.makeObject();//dosomthingwithval}.如果使用auto,可以这样写:templatevoidprocessProduct(constCreator&creator){autoval=creator.makeObject();//dosomthingwithval}抛弃麻烦的模板参数,整个代码变得更加正确。decltypedecltype其实有点像auto的反函数,auto允许你声明一个变量,而decltype可以从变量或表达式中获取类型,一些例子如下:intx=3;decltype(x)y=x;有人会问,decltype的实用性在哪里?让我们继续上面的例子。如果我们想在上面处理产品的例子中使用产品作为返回值怎么办?我们可以这样写://dosomthingwithval}nullptrnullptr是C++中为了解决NULL的二义性而引入的一种新类型,因为NULL实际上代表0,voidF(inta){cout<m{{"a",1},{"b",2},{"c",3}};for(autop:m){cout<返回值类型{函数体}vectoriv{5,4,3,2,1};inta=2,b=1;for_each(iv.begin(),iv.end(),[b](int&x){cout<<(x+b)<int{returnx*(a+b);});//(3)[]中的参数指的是一个全局变量,可以通过Lambda表达式获取。(1)函数中的b表示函数可以获取Lambda表达式之外的全局变量。如果在[]中传入=,则可以获得所有外部变量,如(2)和(3)Lambda表达式公式()中的参数为每次调用函数时传入的参数。->后面加的是Lambda表达式返回值的类型。例如(3)中,返回一个int类型的变量变长参数模板。我们在C++中使用过pair。可以使用make_pair来构建pair,以构建包含两种不同类型数据的Container的集合。例如下面的代码:autop=make_pair(1,"C++11");由于C++11引入了变长参数模板,发明了一种新的数据类型:元组,元组是一个N元组,可以传入1个、2个甚至多个不同类型的数据autot1=make_tuple(1,2.0,"C++11");autot2=make_tuple(1,2.0,"C++11",{1,0,2});这样就避免了之前pair嵌套pair的丑陋做法,让代码更加整洁。另外一个常见的例子就是Print函数。在C语言中,printf可以传入多个参数。在C+11中,我们可以使用变长参数模板来实现更简洁的PrinttemplatevoidPrint(Headhead,typename...tail){cout<v(arr,arr+3);在C++11中,我们可以使用下面的语法来进行替换:intarr[3]{1,2,3};矢量iv{1,2,3};地图{{1,"a"},{2,"b"}};stringstr{"HelloWorld"};然后...如果你想了解更多C++11激动人心的新特性,推荐这两篇博客给你:胡健的C++11系列C++11系列博文C++11编译器ToWrting博文支持列表原文链接:http://my.oschina.net/wangxuanyihaha/blog/183151