C++标准库以若干头文件的方式提供。可以分为两部分:
- 标准函数库:这个库由通用的、独立的、不属于任何类的函数组成,继承自c语言。
- 面向对象类库:这个库是类及相关函数的集合。
C++ 标准库包含了所有的 C 标准库,为了支持类型安全,做了一定的添加和修改。
标准函数库
- 输入/输出 I/O
- 字符串和字符处理
- 数学
- 时间、日期和本地化
- 动态分配
- 其他
- 宽字符函数
面向对象类库
- 标准的 C++ I/O 类
- String 类
- 数值类
- STL 容器类
- STL 算法
- STL 函数对象
- STL 迭代器
- STL 分配器
- 本地化库
- 异常处理类
- 杂项支持库
标准库概览
标准库可分为:
1. 容器Containers
头文件 |
说明 |
备注 |
|
提供了容器类模板 std::array ,固定大小数组的容器。 |
C++11 |
|
提供了专门用来存放位组(一系列 bit)的容器类 std::bitset 。 |
|
|
提供了双向队列容器类模板 std::deque 。 |
|
|
提供了单向链表容器类模板 std::forward_list 。 |
C++11 |
|
提供了双向链表容器类模板 std::list 。 |
|
|
提供了类模板 std::map 和 std::multimap ,前者是有序的一组偶对,后者与前者类似但允许键重复。 |
|
|
提供了由 std::duque (经过适配器模式)包装而来的容器类 std::queue ,即单向队列。还提供了优先队列std::priority_queue 。 |
|
|
提供了容器类模板 std::set 和 std::multiset 。 |
|
|
提供了由 std::duque (经过适配器模式)包装而来的容器类 std::stack ,即栈。 |
|
|
提供了容器类模板 std::unordered_map 和 std::unordered_multimap ,它们都属于哈希表(散列表)。 |
C++11 |
|
提供了容器类模板 std::unordered_set 和 std::unordered_multiset 。 |
C++11 |
|
提供了容器类模板 std::vector ,即动态数组。 |
|
2. 通用General
头文件 |
说明 |
备注 |
|
提供了很多针对 STL 容器的算法。 |
|
|
提供了诸如 std::chrono::duration 和 std::chrono::time_point 等的时间元素,还有时钟。 |
|
|
提供了一些函数对象(如仿函数)。 |
|
|
提供了与迭代器相关的一些类和模板。 |
|
|
提供了 C++ 内存管理的工具,例如 std::unique_ptr ,std::shared_ptr ,std::weak_ptr 。 |
|
|
这里面有一些表示异常的类,例如 std::exception ,std::logic_error ,std::runtime_error 。 |
|
|
提供了元组 std::tuple 。 |
C++11 |
|
提供了类模板偶对 std::pair 。所谓偶对,就是放在一起的、有序的两个东西 (a,b)。提供了 namespacestd::rel_ops ,用来更简便地使用运算符重载。 |
|
3. 本地化Localization
头文件 |
说明 |
备注 |
|
以类和函数的形式封装了与区域有关的操作。 |
|
|
提供了不同代码页(code page)之间字符编码的转换功能。 |
|
4. 字符串Strings
头文件 |
说明 |
备注 |
|
提供了 C++ 标准的字符串类和字符串模板。 |
|
|
提供了用正则表达式进行字符串匹配的功能。 |
C++11 |
头文件 |
说明 |
备注 |
|
提供了对文件的输入输出设施。 |
|
|
提供了控制输出格式的功能。例如,基于特定的进制数格式化整数,或者控制浮点数的精度。 |
|
|
提供了 iostream 需要的一些类型和函数。 |
|
|
提供了一些与 I/O 有关的转发操作。 |
|
|
提供了 C++ 输入与输出的基础层。 |
|
|
提供了类模板 std::istream 和其他与输入相关的辅助类。 |
|
|
提供了类模板 std::ostream 和其他与输出相关的辅助类。 |
|
|
提供了类模板 std::stringstream 和其他用来处理字符串流的类。 |
|
|
提供了对字符序列(文件或字符串)进行读写的基础设施。 |
|
6. 辅助 Language support
头文件 |
说明 |
备注 |
|
提供了一些与异常处理有关的类型和函数。 |
|
|
提供了类模板 std::numeric_limits ,用来描述基本数字类型的最值。 |
|
|
与 new 和 delete 运算符有关的一些类型和函数。 |
|
|
C++ 运行时的类型信息的一些工具。 |
|
7. 线程支持 Thread support library
头文件 |
说明 |
备注 |
|
提供了使用线程所需要的类和 namespace。 |
C++11 |
|
这里面有互斥对象(mutex),锁(lock),还有 once(一种用来保证某函数在某进程中只执行一次的对象)。 |
C++11 |
|
条件变量。一个条件变量代表一个条件,当一个条件变量等待时,它会阻塞当前线程,直到它代表的条件为真。 |
C++11 |
|
可以用它来进行便捷的异步操作,以免代码中出现一大堆回调函数。 |
C++11 |
8. 数学与数值计算 Numerics library
头文件 |
说明 |
备注 |
|
复数相关。 |
|
|
(伪)随机数相关。 |
|
|
定义了五个类模板 valarray ,slice_array ,gslice_array ,mask_array ,indirect_array ,两个类slice ,gslice ,还有一系列相关的函数模板。 |
|
|
一些通用的数学运算。 |
|
9. C标准库 C standard library
C 标准库也可以在C++中使用。