C++标准库定义了一系列函数、宏和对象,以实现跨团队、跨平台的高效且具有卓越性能的标准化 C++ 代码。 本文介绍常用的C++标准库头文件。
c
C字母开头的是C语言库包装器, 并添加到 std 命名空间,例如cmath cstdlib。
模板容器
- 顺序容器
makefile
<vector>: 支持动态扩容的数组,支持随机访问和尾插, 比普通数组更安全、更灵活
<array>: 固定大小数组,支持复制
<deque>: 双向队列, 支持在开始和结尾的高效插入和删除操作
<list>: 双向链表 在任意位置插入和删除元素
<forward_list>: 单向链表
- 有序的关联容器
arduino
<map>: 键值对数组, 且按照升序存储。multimap类似于map,但键不是唯一的
<set>: 集合,以升序方式存储唯一值, 已插入过的元素不可重复插入, multiset类似于set,但是值不必是唯一的。
<bitset>: 为固定长度的位序列定义bitset模板,它可以看作固定长度的紧凑型bool数组
- 无序的关联容器
arduino
<unordered_map>: 无序容器map,其键值随机存放。multimap类似于map,但键不是唯一的
<unordered_set>: 无序容器set,其元素随机存放。multiset类似于set,但是值不必是唯一的
- 容器适配器
arduino
<queue>: 队列, 先进先出(FIFO),只有队头和队尾可以被访问,故不可有遍历行为
<stack>: 堆栈(后进先出)
- 迭代器
makefile
<iterator>: 迭代器
异常和错误处理
makefile
<cassert>: assert()宏
<exception>: 支持异常处理,exception、bad_excption
<stdexcept>: 没有定义在 exception 中的非领域相关的异常
<system_error>: 错误分类和错误代码
<cerrno>: 获取C函数错误信息(错误编号)
通用工具
xml
<any>: 表示任意类型
<optional>: 可选,值可以有,也可以为空
<tuple>: 元组
<type_traits>: 模版元编程中使用的类型trait
<typeinfo>: 运行时类型信息工具 支持变量在运行期间的类型标识
<typeindex>: type_info简单包装,在容器中作为索引类型
<utility>: 多种工具组件
<algorithm>: 提供一组基于算法的函数,包括置换、排序、合并和搜索
<locale> 本地化包括字符类别以及货币和日期表示
<clocale> C语言本地化
<cstdlib>: rand(), abort(),exit(),calloc() malloc() realloc() free() qsort()以及字符处理函数
<cstdarg>: va_arg、va_end、va_start以及va_list类型
<cstddef>: NULL、size_t和ptrdiff_t
I/O流
makefile
<cstdio>: fopen fclose, printf printf scanf 等C语言输入输出操作
<filesystem>: 文件系统 path、directory_entry
<fstream>: 文件流
<iostream>: 支持标准流cin、cout、cerr和clog的输入和输出,还支持多字节字符标准流wcin、wcout、wcerr和wclog
<iomanip>: 提供操纵程序,允许改变流的状态,从而改变输出的格式
<ios>: 定义iostream的基类
<istream>: 为管理输出流缓存区的输入定义模板类
<ostream>: 为管理输出流缓存区的输出定义模板类
<sstream>: 支持字符串的流输入输出
<fstream>: 支持文件的流输入输出
<iosfwd>: 为输入输出对象提供向前的声明
<streambuf>: 支持流输入和输出的缓存
<cwchar>: 支持多字节字符的C样式输入输出
数学和数字
xml
<cfenv> <cfloat>: C语言浮点数和相关操作
<cmath>: C数学库
<limits>、提供与基本数据类型相关的定义。例如,对于每个数值数据类型,它定义了可以表示出来的最大值和最小值以及二进制数字的位数。
<cstdint>: int8_他int64_t等整数类型
<climits>: C风格数字限制,例如INT_MAX
<numeric> 数值算法的原型, 例如accumulate和inner_product
<random>: 随机数生成
<ratio>: 有理数
<valarray>: 支持数值矢量的操作
内存管理
arduino
<memory>: 分别支持共享shared_ptr,独享unique_ptr的动态内存分配)
<memory_resource>: 多态分配器和内存资源
<new>:支持动态内存分配 new、delete
<allocators>: 封装堆内存管理的对象
<scoped_allocator>: 容器的分配器
多线程处理
xml
<csignal>: signal() raise() 信号处理
<atomic>: 原子类型atomic<T>和原子操作
<condition_variable>: 条件变量, 利用线程间共享的全局变量进行同步的一种机制
<future>: future promise async() 提供异步操作结果的机制,轻松解决从异步任务中返回结果
<mutex>: 互斥锁
<shared_mutex>: 共享锁
<thread>: 线程对象
<coroutine>: 协程支持库
字符和字符串
c
<string>: 为字符串类型提供支持和定义,包括单字节字符串(由char组成)的string和多字节字符串(由wchar_t组成)
<string_view>: const string& 不会拷贝字符串
<charconv>: 字符转换, from_chats()、to_chars()
<cuchar>: Unicode 字符
<cwchar>: 宽字符版本的字符串、内存和IO函数
<cctype> 单字节字符操作
<cwctype> cctype的宽字符版本
<cstring> 内存: memcpy() memset() 字符: strcpy() strcmp()
<regex>: 正则表达式
时间
css
<chrono>: C++ 时间工具
<ctime>: C时间工具 time()、localtime()