武汉c培训
达内武汉中心

15827352908

热门课程

武汉C++培训丨看看c++11是个什么样

  • 时间:2018-03-19 13:24
  • 发布:武汉C++培训
  • 来源:互联网

C++于2003年以库技术报告1(TR1)的形式经历了重大改版,TR1包括新的容器类(unordered_set,unordered_map,unordered_multiset和unordered_multimap)和多个支撑正则表达式、元组和函数对象封装器等的新库。随着C++11标准获得通过,TR1和自它首次发布以来新增的库被正式纳入标准的C++标准,正如你将看到的,线程库不是唯一的变化,新标准采纳了数十位专家的意见,使C++变得更有意义。

站在程序员的角度来看,C++11最重要的新功能毫无疑问是并行操作,C++11拥有一个代表执行线程的线程类,在并行环境中用于同步,async()函数模板启动并行任务,为线程独特的数据声明thread_local存储类型。

C++之父最近说C++11就像一个新语言,的确,C++11核心已经发生了巨大的变化,它现在支持Lambda表达式,对象类型自动推断,统一的初始化语法,委托构造函数......

Lambda表达式

Lambda表达式允许你在本地定义函数,即在调用的地方定义,从而消除函数对象产生的许多安全风险,Lambda表达式的格式如下:

1.[capture](parameters)->return-type {body}

[]里是函数调用的参数列表,表示一个Lambda表达式的开始,让我们来看一个Lambda例子:

假设你想计算某个字符串包含多少个大写字母,使用for_each()遍历一个char数组,下面的Lambda表达式确定每个字母是否是大写字母,每当它发现一个大写字母,Lambda表达式给Uppercase加1,Uppercase是定义在Lambda表达式外的一个变量:

int main()

{

char s[]="Hello World!";

int Uppercase = 0; //modified by the lambda

for_each(s, s+sizeof(s), [&Uppercase] (char c) {

if (isupper(c))

Uppercase++;

});

cout<< Uppercase<<" uppercase letters in: "<< s<<endl;

}

这是因为,如果你定义的函数主体被放置在另一个函数调用内部,[&Uppercase]中的“&”记号意味着Lambda主体获得一个Uppercase的引用,以便它能修改,如果没有这个特殊记号,Uppercase将通过值传递,C++11 Lambda表达式也包括成员函数构造器。

C++11引入了新的智能指针类shared_ptr和最近添加的unique_ptr,两者都兼容其它标准库组件,因此你可以在标准容器内安全保存这些智能指针,并使用标准算法操作它们。C++11仍然缺乏一些有用的库,如XML API,套接字,GUI,反射以及前面提到的一个合适的自动垃圾回收器,但C++11的确也带来了许多新特性,让C++变得更加安全,高效,易学易用。也确实感觉像是一个新的更好的语言。

本篇文章是由武汉C++培训为您呈现,希望给您带来更多更好的文章,喜欢的朋友们可以添加微信公众号。


上一篇:武汉C++培训丨怎样对c语言中的编译器命名
下一篇:武汉C++培训丨c++的空间命名方法

武汉C++培训丨学好C语言首先训练自己的思维

武汉C++培训丨C语言有趣的地方

武汉C++培训丨有哪些开发项目需要用到c语言

武汉C++培训丨有关const面试时会问什么

选择城市和中心
贵州省

广西省

海南省

有位老师想和您聊一聊