以下是 C++ 中常用的头文件整理(基于 C++11 及以上标准),按照功能分类说明:
一、标准输入输出头文件
头文件 | 功能描述 |
---|
<iostream> | 包含输入输出流类(cin 、cout 、cerr 、clog ),支持基本输入输出操作。 |
<iomanip> | 用于输入输出流的格式控制(如设置宽度、精度、对齐方式等)。 |
<fstream> | 支持文件输入输出操作,包含 ifstream (读文件)、ofstream (写文件)、fstream (读写文件)。 |
<sstream> | 支持字符串流操作,用于字符串与数值类型的转换(如 stringstream )。 |
二、标准容器与算法头文件
容器类
头文件 | 功能描述 |
---|
<vector> | 动态数组,支持随机访问和动态扩容。 |
<list> | 双向链表,支持快速插入和删除(非随机访问)。 |
<deque> | 双端队列,支持在两端快速插入和删除元素。 |
<forward_list> | 单向链表(C++11 新增),比 list 更节省空间。 |
<array> | 固定大小数组(C++11 新增),性能优于普通数组,支持迭代器和范围遍历。 |
<stack> | 栈(基于 deque 或 list 实现),后进先出(LIFO)。 |
<queue> | 队列(基于 deque 或 list 实现),先进先出(FIFO)。 |
<priority_queue> | 优先队列,元素按优先级排序(默认最大堆)。 |
<map> | 关联容器(键值对),按键排序(红黑树实现),支持快速查找。 |
<unordered_map> | 无序关联容器(哈希表实现),按键快速哈希查找(C++11 新增)。 |
<set> | 有序集合,元素唯一且按值排序(红黑树实现)。 |
<unordered_set> | 无序集合(哈希表实现),元素唯一且不排序(C++11 新增)。 |
<pair> | 用于存储一对值(模板结构体),常与容器结合使用。 |
算法与迭代器
头文件 | 功能描述 |
---|
<algorithm> | 包含各种常用算法(如排序、查找、拷贝、替换、遍历等)。 |
<numeric> | 数值算法(如累加、乘积、填充等)。 |
<iterator> | 迭代器相关工具(如迭代器适配器、输入输出迭代器等)。 |
<functional> | 函数对象(仿函数)和 Lambda 表达式相关工具(C++11 支持 Lambda)。 |
三、数值与数学头文件
头文件 | 功能描述 |
---|
<cmath> | C 风格数学函数(如 sin 、cos 、sqrt 、pow 等)。 |
<cstdlib> | 包含 abs 、rand 、srand 等函数,以及内存分配函数 malloc /free 。 |
<limits> | 用于获取数据类型的极限值(如 std::numeric_limits<int>::max() )。 |
<complex> | 复数运算支持(定义 complex 类,支持加减乘除、模运算等)。 |
<valarray> | 数值数组,支持批量数值运算(如向量运算、矩阵运算等)。 |
四、字符串与字符处理头文件
头文件 | 功能描述 |
---|
<string> | 字符串类(std::string ),支持动态字符串操作(拼接、查找、替换等)。 |
<cstring> | C 风格字符串函数(如 strlen 、strcmp 、strcpy 等)。 |
<cctype> | 字符处理函数(如判断字符类型、大小写转换等,如 isalpha 、tolower )。 |
五、内存与动态分配头文件
头文件 | 功能描述 |
---|
<memory> | 内存管理工具(如智能指针 unique_ptr 、shared_ptr 、weak_ptr ,C++11 新增)。 |
<new> | 包含 operator new 和 operator delete 的重载声明,支持动态内存分配。 |
六、时间与日期头文件
头文件 | 功能描述 |
---|
<chrono> | 时间测量工具(高精度时间计算,如 system_clock 、steady_clock ,C++11 新增)。 |
<ctime> | C 风格时间函数(如 time 、localtime 、asctime 等)。 |
七、其他常用头文件
头文件 | 功能描述 |
---|
<exception> | 异常处理基础类(std::exception ),用于自定义异常。 |
<stdexcept> | 标准异常类(如 runtime_error 、logic_error 等)。 |
<type_traits> | 类型特性(模板元编程工具,判断类型属性,C++11 新增)。 |
<typeinfo> | 运行时类型信息(typeid 操作符,用于获取类型名称)。 |
<cassert> | 断言工具(assert 宏,用于调试阶段检查条件)。 |
<initializer_list> | 初始化列表(C++11 新增,用于方便地初始化容器或数组)。 |
注意事项
- C 风格头文件:
C++ 兼容 C 标准库头文件,通常将 C 头文件名称前加 c
(如 <cstdio>
对应 C 的 <stdio.h>
),且内容位于 std
命名空间中。 - 命名空间:
标准库内容均位于 std
命名空间中,使用时需通过 using namespace std;
声明或直接用 std::
限定(如 std::cout
)。 - C++11 及以上特性:
部分头文件(如 <array>
、<chrono>
、<memory>
)是 C++11 后引入的,编译时需确保编译器支持相应标准(如 g++
使用 -std=c++11
或更高选项)