c++14新特性_C++新标准与Boost库

01

C++20的一些新特性

在往期文章中,我们介绍了C++20中的概念、范围、模块、协程等新特性,那么C++20中还有什么新的特性呢?

1.1 lamda表达式

对于模板形式的lamda表达式,C++14中允许了泛型lamda表达式,让编译器自动推导类型和返回参数:

79f38c4a6f7bd4a2d2e746272ee9783c.png

而C++20中进一步,允许了模板形式的lambda表达式:

2e2824a573cf946134bc00e035a50bf5.png

有了模板形式的lamda表达式之后,获取参数类型、类参数中的成员等特性就会更为直观自然:

83590873d1e6fda6b13291156563c16c.png c0194912cb0226d865c6da2a5ff0fe08.png 4fbf7f721a33466a594b52673541b888.png

1.2 原子(Atomic)智能指针:

智能指针(shared_ptr)的线程安全性

     引用计数控制单元线程安全, 保证对象只被释放一次。 

    但对于数据的读写没有线程安全,需要使用mutex控制智能指针的访问或使用全局非成员原子操作函数访问,诸如: std::atomic_load(), atomic_store(), … 

在C++20中,提供了原子智能指针,来保证智能指针的安全:

f01ca6bc77e470c8ebfac81177a7afb4.png 6cbf415a34e816dacf063a8c4e8d9570.png

1.3 同步(Synchronization)库

dc81dca3270335f5cd6b2973ebbe98c9.png 2cc45b1aea9500f436852d94ce2f9334.png

02

Boost库

2.1 什么是Boost库:

Boost库是为C++语言标准库提供扩展的一些C++程序库的总称,由Boost社区组织开发、维护。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。Boost库是一个优秀、可移植且开源的C++库,在C++社区影响很大,是不折不扣的“准”标准库。Boost包含了不少工具类,可以完成比较具体的工作。

2.2 Boost库包含什么内容:

按照实现的功能,Boost可为大致归入20个分类,有些库同时归入几种类别。

1)字符串和文本处理库:如Format库(实现类似printf的格式化对象,可以把参数格式化到一个字符串,而且是完全类型安全的)、IOStream库(扩展C++标准库流处理,建立一个流处理框架)、Lexical Cast库(用于字符串、整数、浮点数的字面转换)等。

2)容器库:如Array 库(对C语言风格的数组进行包装)、Bimap 库(双向映射结构库)等

3)迭代器库:如GIL 库(通用图像库)、Graph 库(处理图结构的库)等。

4)算法库:如Foreach库(容器遍历算法)、GIL库(通用图像库)等。

5)函数对象和高阶编程库:如(Bind库:绑定器的泛化,已被收入TR1)、Function库(实现一个通用的回调机制,已被收入TR1)等。

另外还有泛型编程库、模板元编程库、预处理元编程库、并发编程库、数学和数字库、数据结构库、图像处理库等分类。

2.3 Boost库与C++标准变化之间有什么关系:

Boost社区建立的初衷之一就是为C++的标准化工作提供可供参考的实现,Boost社区的发起人Dawes本人就是C++标准委员会的成员之一。在Boost库的开发中,Boost社区也在这个方向上取得了丰硕的成果。在送审的C++标准库TR1中,有十个Boost库成为标准库的候选方案。在更新的TR2中,有更多的Boost库被加入到其中。从某种意义上来讲,Boost库成为具有实践意义的准标准库。

下图部分展示了C++11标准中对Boost库的吸收情况。

002d0eb3e6a5c6a8a8808319ae932b72.png

03

总结

总的来说,今天清小c给大家介绍了C++20中的一些新特性以及Boost库,你们明白了吗?

参考资料:

林砺宗,宋启盛,林森,王启春.    基于BOOST库的数控NC代码宏程序编译器. 《 CNKI;WanFang 》 , 2010

许志海,张昭云,丁雅莉.    开源Boost库在地理网络分析中的应用. 《 CNKI;WanFang 》 , 2010

CSDN社区博文《C++20中的新特性》

CSDN社区博文《C++11的新功能特性对Boost库影响》

编辑:任若寒

审核:刘政宁、姚炫容

指导老师:李超

eb1089c1a3c2d027d635971782c107e4.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值