Logo
Section 1 / 3

历史

让我们深入探讨一下C++漫长发展历史中的一些重要里程碑。

导入

历史

让我们深入探讨一下C++漫长发展历史中的一些重要里程碑。

C++ 标准库由许多组件构成。本章有两个目的:一是为你提供这些组件的快速概览,二是帮助你了解如何使用它们。

历史背景

C++ 及其标准库有着悠久的历史。C++ 始于上世纪80年代,发展至今已到2017年。熟悉软件开发的人都知道,这个领域的发展速度非常快,因此30年是一段相当长的时间。不难理解,C++ 早期的一些组件(例如 I/O 流)在设计思想上与现代的标准模板库(STL)有很大不同。过去30年中软件开发领域的演变,在 C++ 标准库中清晰可见,这也反映了软件问题解决方式的演进过程。C++ 最初是一种面向对象的语言,随后通过 STL 引入了泛型编程,如今又吸收了许多函数式编程的思想。

1998 年的第一个 C++ 标准库包含三个组成部分:前面提到的 I/O 流(主要用于文件处理)、字符串库以及标准模板库(STL)。标准模板库使得算法可以透明地应用于各种容器之上。

2005 年,技术报告第1号(TR1)进一步扩展了 C++ 库。这份扩展文档 ISO/IEC TR 19768 并非正式标准,但其中绝大多数组件后来都被纳入 C++11。这些新增内容包括正则表达式、智能指针、哈希表、随机数和时间处理等库,主要借鉴自 boost 库。

除了 TR1 的标准化之外,C++11 还引入了一个全新的组件:多线程库。

C++14 是对 C++11 标准的一次小幅更新,仅对已有的智能指针、元组(tuple)、类型特性(type traits)和多线程相关库做了一些改进。

接下来 C++ 标准库将走向何方?随着 C++17 和 C++20 的发布,我们将迎来两个新版本。C++17 已经定案,它包含了文件系统库,以及三个新的数据类型 std::any、std::optional 和 std::variant。而 C++20 有望引入网络编程相关的库,通过 Concepts Lite 提供更完善的模板参数类型系统,并进一步增强对多线程的支持。

了解了 C++ 的发展历程后,接下来我们来看看它提供的各种实用工具。

简介

实用工具