C++标准库头文件

来自cppreference.com
< cpp

C++标准库的接口由下列头文件的集合定义。

目录

工具库

<cstdlib> 通用工具:程序控制动态内存分配随机数排序与查找
<csignal> 信号管理的函数与宏常量
<csetjmp> 保存到执行环境的宏,及跳到执行环境的函数
<cstdarg> 变长参数列表的处理
<typeinfo> 运行时类型信息工具
<typeindex> (C++11 起) std::type_index
<type_traits> (C++11 起) 编译时类型信息
<bitset> std::bitset类模板
<functional> 函数对象,为使用标准算法而定义
<utility> 多种工具组件
<ctime> C风格时间/日期工具
<chrono> (C++11 起) C++时间工具
<cstddef> 类型的typedef,如size_t、NULL及其他
<initializer_list> (C++11 起) std::initializer_list类模板
<tuple> (C++11 起) std::tuple类模板
<any> (C++17 起) std::any
<optional> (C++17 起) std::optional类模板
<variant> (C++17 起) std::variant类模板
动态内存管理
<new> 低级内存管理工具
<memory> 高级内存管理工具
<scoped_allocator> (C++11 起) 嵌套分配器类
<memory_resource> (C++17 起) 多态分配器及内存资源
数值极限
<climits> 整数类型极限
<cfloat> 浮点类型极限
<cstdint> (C++11 起) 定长整数其他类型的极限
<cinttypes> (C++11 起) 格式化宏intmax_tuintmax_t数学工具及转换
<limits> 查询算术类型属性的标准化方式
错误处理
<exception> 异常处理工具
<stdexcept> 标准异常对象
<cassert> 将其参数与零比较的条件性编译宏
<system_error> (C++11 起) 定义std::error_code,平台依赖的错误码
<cerrno> 含有最后一次错误编号的宏

字符串库

<cctype> 确定字符数据所容纳类型的函数
<cwctype> 确定宽字符数据的类型的函数
<cstring> 多种窄字符串处理函数
<cwchar> 多种多字节字符串处理函数
<cuchar> (C++11 起) C风格Unicode字符转换函数
<string> std::basic_string类模板
<string_view> (C++17 起) std::basic_string_view类模板

容器库

<array> (C++11 起) std::array容器
<vector> std::vector容器
<deque> std::deque容器
<list> std::list容器
<forward_list> (C++11 起) std::forward_list容器
<set> std::setstd::multiset关联容器
<map> std::mapstd::multimap关联容器
<unordered_set> (C++11 起) std::unordered_setstd::unordered_multiset无序关联容器
<unordered_map> (C++11 起) std::unordered_mapstd::unordered_multimap无序关联容器
<stack> std::stack容器适配器
<queue> std::queuestd::priority_queue容器适配器

算法库

<algorithm> 操作于容器上的算法
<execution> (C++17) 算法并行版本的预定义执行策略

迭代器库

<iterator> 容器迭代器

数值库

<cmath> 常用数学函数
<complex> 复数类型
<valarray> 表示和操作值的数组的类
<random> (C++11 起) 随机数生成器及分布
<numeric> 容器中值的数值运算
<ratio> (C++11 起) 编译时有理数算术
<cfenv> (C++11 起) 浮点环境访问函数

输入/输出库

<iosfwd> 所有输入/输出库中的类的前置声明
<ios> std::ios_base类、std::basic_ios类模板及数个typedef
<istream> std::basic_istream类模板及数个typedef
<ostream> std::basic_ostreamstd::basic_iostream类模板及数个typedef
<iostream> 数个标准流对象
<fstream> std::basic_fstreamstd::basic_ifstreamstd::basic_ofstream类模板及数个typedef
<sstream> std::basic_stringstreamstd::basic_istringstream, std::basic_ostringstream类模板及数个typedef
<strstream> std::strstreamstd::istrstreamstd::ostrstream(过时)
<iomanip> 控制格式或输入输出的帮助函数
<streambuf> std::basic_streambuf类模板
<cstdio> C风格输入输出函数

本地化库

<locale> 本地化工具
<clocale> C本地化工具
<codecvt> (C++11 起) Unicode转化设施

正则表达式库

<regex> (C++11 起) 支持正则表达式处理的类、算法及迭代器

原子操作库

<atomic> (C++11 起) 原子操作库

线程支持库

<thread> (C++11 起) std::thread类及支持函数
<mutex> (C++11 起) 互斥原语
<shared_mutex> (C++14 起) 共享的互斥原语
<future> (C++11 起) 异步计算的原语
<condition_variable> (C++11 起) 线程等待条件

文件系统库

<filesystem> (C++17 起) std::path类及支持函数

实验性库

<experimental/algorithm> (库基础TS) 标准库扩展并行扩展
<experimental/any> (库基础TS) 标准库扩展
<experimental/chrono> (库基础TS) 标准库扩展
<experimental/deque> (库基础TS) 标准库扩展
<experimental/execution_policy> (并行 TS) 并行扩展
<experimental/exception_list> (并行 TS) 并行扩展
<experimental/filesystem> (文件系统 TS) 文件系统库
<experimental/forward_list> (库基础TS) 标准库扩展
<experimental/future> (库基础TS) 标准库扩展
<experimental/list> (库基础TS) 标准库扩展
<experimental/functional> (库基础TS) 标准库扩展
<experimental/map> (库基础TS) 标准库扩展
<experimental/memory> (库基础TS) 标准库扩展
<experimental/memory_resource> (库基础TS) 标准库扩展
<experimental/numeric> (并行 TS) 并行扩展
<experimental/optional> (库基础TS) 标准库扩展
<experimental/ratio> (库基础TS) 标准库扩展
<experimental/regex> (库基础TS) 标准库扩展
<experimental/set> (库基础TS) 标准库扩展
<experimental/string> (库基础TS) 标准库扩展
<experimental/string_view> (库基础TS) 标准库扩展
<experimental/system_error> (库基础TS) 标准库扩展
<experimental/tuple> (库基础TS) 标准库扩展
<experimental/type_traits> (库基础TS) 标准库扩展
<experimental/unordered_map> (库基础TS) 标准库扩展
<experimental/unordered_set> (库基础TS) 标准库扩展
<experimental/utility> (库基础TS) 标准库扩展
<experimental/vector> (库基础TS) 标准库扩展

[编辑] C兼容头文件

对于一些拥有形式xxx.h的C标准库头文件,C++标准库同时包含同名的头文件和拥有形式cxxx的头文件(所有有意义的cxxx头文件列于上方)。

除了complex.h这一例外,每个包含于C++标准库的xxx.h头文件将对应的cxxx本应置于std命名空间的每个名字放在全局命名空间中。

允许这些头文件也在std命名空间中声明同样的名称,而且允许对应的cxxx头文件也在全局命名空间中声明同样的名称:包含<cstdlib>肯定会提供std::malloc,亦可提供::malloc。包含<stdlib.h>肯定会提供::malloc,亦可提供std::malloc。这甚至应用于不是C标准库一部分的函数和函数重载。

<assert.h> (过时) 表现如同每个来自<cassert>的名称被放入全局命名空间
<ctype.h> (过时) 表现如同每个来自<cctype>的名称被放入全局命名空间
<errno.h> (过时) 表现如同每个来自<cerrno>的名称被放入全局命名空间
<fenv.h> (过时) 表现如同每个来自<cfenv>的名称被放入全局命名空间
<float.h> (过时) 表现如同每个来自<cfloat>的名称被放入全局命名空间
<inttypes.h> (过时) 表现如同每个来自<cinttypes>的名称被放入全局命名空间
<limits.h> (过时) 表现如同每个来自<climits>的名称被放入全局命名空间
<locale.h> (过时) 表现如同每个来自<clocale>的名称被放入全局命名空间
<math.h> (过时) 表现如同每个来自<cmath>的名称被放入全局命名空间
<setjmp.h> (过时) 表现如同每个来自<csetjmp>的名称被放入全局命名空间
<signal.h> (过时) 表现如同每个来自<csignal>的名称被放入全局命名空间
<stdarg.h> (过时) 表现如同每个来自<cstdarg>的名称被放入全局命名空间
<stddef.h> (过时) 表现如同每个来自<cstddef>的名称被放入全局命名空间
<stdint.h> (过时) 表现如同每个来自<cstdint>的名称被放入全局命名空间
<stdio.h> (过时) 表现如同每个来自<cstdio>的名称被放入全局命名空间
<stdlib.h> (过时) 表现如同每个来自<cstdlib>的名称被放入全局命名空间
<string.h> (过时) 表现如同每个来自<cstring>的名称被放入全局命名空间
<time.h> (过时) 表现如同每个来自<ctime>的名称被放入全局命名空间
<uchar.h> (过时) 表现如同每个来自<cuchar>的名称被放入全局命名空间
<wchar.h> (过时) 表现如同每个来自<cwchar>的名称被放入全局命名空间
<wctype.h> (过时) 表现如同每个来自<cwctype>的名称被放入全局命名空间

[编辑] 不受支持的C头文件

C头文件<stdatomic.h><stdnoreturn.h><threads.h>不包含于C++且无cxxx等价版本。

[编辑] 空C头文件

头文件<complex.h><ccomplex><tgmath.h><ctgmath>不含有任何来自C标准库的内容,而且不过是包含其他来自C++标准库的头文件。C++中这些头文件的使用均为过时。

<ccomplex> (C++11 起)(C++17中过时) 简单地包含<complex>
<complex.h> (过时) 简单地包含<complex>
<ctgmath> (C++11 起)(C++17中过时) 简单地包含<complex><cmath>:等价于C头文件tgmath.h内容的重载已经提供于那些头文件
<tgmath.h> (过时) 行为如同每个来自<ctgmath>的名称被放入全局命名空间

[编辑] 无意义的C头文件

头文件<ciso646><cstdalign><cstdbool>在C++中无意义,因为它们在C中提供的宏是C++的关键词。

<ciso646> 空头文件。C中出现于iso646.h的宏是C++的关键词
<iso646.h> (过时) 表现如同每个来自<ciso646>的名称被放入全局命名空间
<cstdalign> (C++11 起)(C++17中过时) 定义一个兼容性宏常量
<stdalign.h> (过时) 表现如同每个来自<cstdalign>的名称被放入全局命名空间
<cstdbool> (C++11 起)(C++17中过时) 定义一个兼容性宏常量
<stdbool.h> (过时) 表现如同每个来自<cstdbool>的名称被放入全局命名空间

[编辑] 参阅

C标准库头文件C 文档