标准库提供的设施可以分为以下几类:
- 运行时语言支持(例如,对资源分配和运行时类型信息的支持);见30.3节
- C标准库(进行了微小的修改,以便尽量减少与类型系统的冲突);见第43章。
- 字符串和I/O流(包括对国际字符集和本地化的支持);见第36、38和39章。IO流是一个可扩展的输入输出框架,用户可向其中添加自己的流、缓冲策略和字符集。
- 一个包含容器(如 vector和map)和算法(如find()、sort()和 merge()的框架;见4.4节、4.5节、第31~33章。人们习惯上称这个框架为标准模板库(STL)[Stepanov,1994],用户可向其中添加自己定义的容器和算法。
- 对数值计算的支持(例如标准数学函数、复数、支持算术运算的向量以及随机数发生器),见3.2.1.1节和第40章。
- 对正则表达式匹配的支持,见5.5节和第37章。
- 对并发程序设计的支持,包括 thread和lock机制,见5.3节和第41章。在此基础上,用户就能够以库的形式添加新的并发模型.
- 一系列工具,它们用于支持模板元编程(如类型特性,见5.4.2节、28.2.4节和35.4节)、STL-风格的泛型程序设计(如pair,见5.4.3节和34.2.4.2节)和通用程序设计(如 clock,见5.4.1节和35.2节)。
- 用于资源管理的“智能指针“(如 unique_ptr和 shared_ptr,见5.2.1节和34.3节)和垃圾收集器接口(见34.5节)。
- 特殊用途容器,例如 array(见34.2.1节)、 bitset(见34.2.2节)和 tuple(见34.2.4.2节)。
判断是否应该将一个类纳入标准库的主要依据包括:
- 它几乎对所有C++程序员(包括初学者和专家)都有用;
- 它能以一种通用的形式提供给程序员,并且与简单版本相比没有严重的额外开销
- 易学易用(相对于编程任务的内在复杂性而言)。
本质上来说,C++标准库提供了最常用的基本数据结构以及运行在之上的基础算法。
