陈萍编辑

82页《现代C++教程》:高速上手C++ 11/14/17/20

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/

入门C++
1
相关数据
计算机图形技术

图像数据处理、计算机图像(英语:Computer Graphics)是指用计算机所创造的图形。更具体的说,就是在计算机上用专门的软件和硬件用来表现和控制图像数据。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

人机交互技术

人机交互,是一门研究系统与用户之间的交互关系的学问。系统可以是各种各样的机器,也可以是计算机化的系统和软件。人机交互界面通常是指用户可见的部分。用户通过人机交互界面与系统交流,并进行操作。小如收音机的播放按键,大至飞机上的仪表板、或是发电厂的控制室。

推荐文章
暂无评论
暂无评论~