机器之心报道
编辑:陈萍
C++ 是一门古老又新颖的语言,现代C++ 具备哪些新特性呢?这本书带你了解。
C++ 自发明以来,经历了多次修订,每一次修订都为C++ 增加了新的特性并作了一些修改。
纵观C++ 的发展史,从 C++98 的出现到 C++11 的正式定稿经历了长达十年多之久的积累。C++14/17 则是作为对 C++11 的重要补充和优化,而C++20 将这门语言领进了现代化的大门,所有这些新标准中扩充的特性,给 C++ 这门语言注入了新的活力。
现代 C++ (指 C++11/14/17/20) 的大量特性使得整个 C++ 语言更加现代化。现代 C++ 不仅仅增强了 C++ 语言自身的可用性,auto
关键字语义的修改使得我们更加有信心来操控极度复杂的模板类型。同时还对语言运行期进行了大量的强化,Lambda 表达式的出现让 C++ 具有了匿名函数的闭包特性,而这一特性在现代的编程语言(诸如 Python/Swift/... )中已经司空见惯,右值引用的出现解决了 C++ 长期以来被人诟病的临时对象效率问题等等。
本文要介绍的这本书就是关于现代C++ 的。相比于传统的C++,现代C++ 具有哪些新特性呢?
目标读者
这本书假定读者已经熟悉了传统 C++ ,至少在阅读传统 C++ 代码上不具备任何困难。换言之,那些长期使用传统 C++进行编码的人、渴望在短时间内迅速了解现代 C++特性的人非常适合阅读本书;
本书一定程度上介绍了一些现代 C++ 的黑魔法,但这些魔法毕竟有限,不适合希望进阶学习现代 C++ 的读者,本书的定位系现代 C++ 的快速上手。当然,希望进阶学习的读者可以使用本书来回顾并检验自己对现代 C++的熟悉度。
书籍简介
这本书有中英文两个版本,包含10个章节。每个章节中都有大量的代码,该书作者也提供了代码链接,所有代码按章节组织,文件夹名称为章节序号。此外,每章最后还加入了少量难度极小的习题,用于检验读者能否混合运用当前章节中的知识点,同样地,该书作者也提供了习题答案链接。 中文版链接:https://changkun.de/modern-cpp/pdf/modern-cpp-tutorial-zh-cn.pdf 英文版链接:https://changkun.de/modern-cpp/pdf/modern-cpp-tutorial-en-us.pdf 书籍代码链接:https://changkun.de/modern-cpp/code/ 习题解答链接:https://changkun.de/modern-cpp/exercises/ 章节目录
第1章:主要介绍了从 C++11 开始,C++ 标准库中被弃用的主要特性,此外还介绍了C++ 与C的兼容性。
第2章:介绍了语言可用性的强化,主要内容包括常量、变量及其初始化、类型推导、控制流、模板以及面向对象。
第3章:语言运行期的强化,主要介绍了Lambda表达式、函数对象包装器、右值引用。
第4章:简单介绍了现代 C++ 中新增的容器,包括线性容器、无序容器以及元组。它们的用法和传统 C++ 中已有的容器类似,相对简单,可以根据实际场景选择需要使用的容器,获得更好的性能。
第5章:介绍了智能指针与内存管理,包括RAII 与引用计数以及指针std::shared_ptr、std::unique_ptr、std::weak_ptr。
第6章:简单介绍了正则表达式,然后根据使用正则表达式的主要需求,通过一个实际的例子介绍了正则表达式库的使用。
第7章:主要介绍了 std::thread、std::mutex、std::future
这些并发编程中不可回避的重要工具。除此之外,还介绍了 C++11 最重要的几个特性之一「内存模型」, 它们为 C++ 在标准化高性能计算中提供了重要的基础。
第8章:文件系统。该库提供了文件系统、路径、常规文件、目录等相关组件进行操作的相关功能。
第9章:介绍了C++11 的几个特性,包括新类型、noexcept的装饰和操作、字面量以及内存对齐。这几个特性是仍未介绍的现代 C++ 新特性里使用频次较靠前的特性,其中noexcept
是最为重要的特性,它的功能在于阻止异常的扩散传播,有效地使编译器最大限度地优化代码。
第10章:对C++20 进行了展望。 目前,这本书已同步上线GitHub,并在短时间内获得7.1k星。最近更新时间为2020年10月3日,之后可能会有新内容更新。获取最新内容,请查看GitHub: https://github.com/changkun/modern-cpp-tutorial
作者介绍
本书作者欧长坤2012年就读于西南民族大学计算机科学专业;2015年,作为交换生来到德国学习人机交互(HCI);2016年,获得工程学学士学位,进入慕尼黑LMU攻读HCI硕士学位;2018年,就读于慕尼黑LMU,获得了与HCI并行学位的计算机科学硕士学位;2019年,获得人机交互和计算机科学两个平行学位的理学硕士学位,并开始在慕尼黑LMU担任博士研究生的研究助理。 其主要研究方向为计算机图形学、机器学习、系统编程以及人机交互,擅长C++、JavaScript、Python等编程语言。 公开发表的学术研究包括:
参考链接:https://changkun.de/modern-cpp/
从算法到应用,入门声纹技术。
10月19日,第一讲:音频基础与声纹识别。谷歌资深软件工程师、声纹识别与语言识别团队负责人王泉老师将介绍声纹识别技术相关基础知识,包括发展历程、听觉感知和音频处理相关基本概念与方法、声纹领域最核心的应用声纹识别等。
添加机器之心小助手(syncedai5),备注「声纹」,进群一起看直播。
© THE END
转载请联系本公众号获得授权
投稿或寻求报道:content@jiqizhixin.com