C 规范库界说了一系列函数、宏和目标,以实现跨团队、跨平台的高效且具有杰出性能的规范化 C 代码。
本文介绍常用的C 规范库头文件。
C字母开头的是C言语库包装器, 并添加到 std 命名空间,例如cmath cstdlib。
模板容器
- 顺序容器
<vector>: 支撑动态扩容的数组,支撑随机拜访和尾插, 比一般数组更安全、更灵活
<array>: 固定大小数组,支撑复制
<deque>: 双向行列, 支撑在开始和结束的高效刺进和删去操作
<list>: 双向链表 在恣意方位刺进和删去元素
<forward_list>: 单向链表
- 有序的相关容器
<map>: 键值对数组, 且依照升序存储。multimap类似于map,但键不是仅有的
<set>: 调集,以升序方式存储仅有值, 已刺进过的元素不可重复刺进, multiset类似于set,可是值不必是仅有的。
<bitset>: 为固定长度的位序列界说bitset模板,它能够看作固定长度的紧凑型bool数组
- 无序的相关容器
<unordered_map>: 无序容器map,其键值随机寄存。multimap类似于map,但键不是仅有的
<unordered_set>: 无序容器set,其元素随机寄存。multiset类似于set,可是值不必是仅有的
- 容器适配器
<queue>: 行列, 先进先出(FIFO),只要队头和队尾能够被拜访,故不可有遍历行为
<stack>: 仓库(后进先出)
- 迭代器
<iterator>: 迭代器
异常和过错处理
<cassert>: assert()宏
<exception>: 支撑异常处理,exception、bad_excption
<stdexcept>: 没有界说在 exception 中的非范畴相关的异常
<system_error>: 过错分类和过错代码
<cerrno>: 获取C函数过错信息(过错编号)
通用东西
<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流
<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样式输入输出
数学和数字
<cfenv> <cfloat>: C言语浮点数和相关操作
<cmath>: C数学库
<limits>、供给与基本数据类型相关的界说。例如,关于每个数值数据类型,它界说了能够表明出来的最大值和最小值以及二进制数字的位数。
<cstdint>: int8_他int64_t等整数类型
<climits>: C风格数字约束,例如INT_MAX
<numeric> 数值算法的原型, 例如accumulate和inner_product
<random>: 随机数生成
<ratio>: 有理数
<valarray>: 支撑数值矢量的操作
内存办理
<memory>: 别离支撑同享shared_ptr,独享unique_ptr的动态内存分配)
<memory_resource>: 多态分配器和内存资源
<new>:支撑动态内存分配 new、delete
<allocators>: 封装堆内存办理的目标
<scoped_allocator>: 容器的分配器
多线程处理
<csignal>: signal() raise() 信号处理
<atomic>: 原子类型atomic<T>和原子操作
<condition_variable>: 条件变量, 利用线程间同享的全局变量进行同步的一种机制
<future>: future promise async() 供给异步操作成果的机制,轻松解决从异步任务中返回成果
<mutex>: 互斥锁
<shared_mutex>: 同享锁
<thread>: 线程目标
<coroutine>: 协程支撑库
字符和字符串
<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>: 正则表达式
时刻
<chrono>: C 时刻东西
<ctime>: C时刻东西 time()、localtime()