C++头文件的具体使用

 更新时间:2026年02月02日 10:42:51   作者:忘川渡梦  
本文主要介绍了C++头文件的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、标准C++头文件(无扩展名)

核心语言功能

#include <iostream>      // 输入输出流(cin, cout, cerr, clog)
#include <iomanip>       // 格式化输出(setw, setprecision等)
#include <fstream>       // 文件流(ifstream, ofstream)
#include <sstream>       // 字符串流(istringstream, ostringstream)
#include <string>        // 字符串类(std::string)

容器类

#include <vector>        // 动态数组
#include <list>          // 双向链表
#include <deque>         // 双端队列
#include <array>         // 固定大小数组(C++11)
#include <forward_list>  // 单向链表(C++11)
#include <set>           // 有序集合
#include <map>           // 有序映射
#include <unordered_set> // 哈希集合(C++11)
#include <unordered_map> // 哈希映射(C++11)
#include <stack>         // 栈
#include <queue>         // 队列(queue, priority_queue)
#include <bitset>        // 位集

算法和数值操作

#include <algorithm>     // 常用算法(sort, find, transform等)
#include <numeric>       // 数值算法(accumulate, inner_product等)
#include <functional>    // 函数对象和函数适配器
#include <cmath>         // 数学函数
#include <complex>       // 复数运算
#include <random>        // 随机数生成(C++11)
#include <limits>        // 数值极限(numeric_limits)

内存管理

#include <memory>        // 智能指针(unique_ptr, shared_ptr等)
#include <new>           // 动态内存操作

异常处理

#include <exception>     // 异常基类
#include <stdexcept>     // 标准异常类

类型支持

#include <typeinfo>      // 类型信息(typeid)
#include <type_traits>   // 类型特性(C++11)
#include <cstddef>       // 常用类型定义(size_t, nullptr_t等)
#include <cstdint>       // 固定宽度整数类型(C++11)

多线程支持(C++11及以后)

#include <thread>        // 线程类
#include <mutex>         // 互斥锁
#include <atomic>        // 原子操作
#include <condition_variable> // 条件变量
#include <future>        // 异步操作

二、标准C头文件(c前缀)

这些头文件源自C语言,在C++中为了兼容而保留:

#include <cstdio>        // 标准输入输出(printf, scanf等)
#include <cstdlib>       // 通用工具(malloc, free, rand, exit等)
#include <cstring>       // 字符串处理(strcpy, strlen, memcpy等)
#include <ctime>         // 时间日期函数
#include <cctype>        // 字符分类函数(isalpha, isdigit等)
#include <cmath>         // 数学函数(C++中也可用<cmath>替代<math.h>)
#include <cassert>       // 断言宏
#include <cerrno>        // 错误号

三、常用特殊用途头文件

#include <utility>       // 工具函数(pair, move, forward等)
#include <tuple>         // 元组(C++11)
#include <regex>         // 正则表达式(C++11)
#include <chrono>        // 时间库(C++11)
#include <ratio>         // 编译期有理数(C++11)
#include <initializer_list> // 初始化列表(C++11)
#include <filesystem>    // 文件系统(C++17)
#include <any>           // 任意类型容器(C++17)
#include <variant>       // 类型安全的联合体(C++17)
#include <optional>      // 可选值(C++17)

四、头文件使用示例

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

int main() {
    std::vector<int> vec = {5, 2, 8, 1, 9};
    
    // 使用algorithm排序
    std::sort(vec.begin(), vec.end());
    
    // 使用iostream输出
    for (int num : vec) {
        std::cout << num << " ";
    }
    
    return 0;
}

五、最佳实践

使用标准头文件:优先使用C++标准头文件而非C风格头文件

包含守卫:自定义头文件应使用包含守卫防止重复包含

#ifndef MY_HEADER_H
#define MY_HEADER_H
// 头文件内容
#endif

使用pragma once(非标准但广泛支持)

#pragma once
// 头文件内容

避免包含不必要头文件:只包含实际需要的头文件,减少编译时间

使用前向声明:当只需要指针或引用时,使用前向声明而非包含整个头文件

六、C++20新增头文件

#include <compare>        // 三路比较运算符(<=>)
#include <concepts>       // 概念(concepts)
#include <ranges>         // 范围(ranges)
#include <span>           // 连续序列视图(span)
#include <bit>           // 位操作
#include <numbers>       // 数学常数
#include <syncstream>    // 同步输出流
#include <stop_token>    // 停止令牌

到此这篇关于C++头文件的具体使用的文章就介绍到这了,更多相关C++头文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于c++编译protobuf时提示LNK2001 无法解析的外部符号的问题

    关于c++编译protobuf时提示LNK2001 无法解析的外部符号的问题

    这篇文章主要介绍了关于c++编译protobuf时提示LNK2001 无法解析的外部符号的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • C++利用两个栈实现队列的方法

    C++利用两个栈实现队列的方法

    这篇文章主要给大家介绍了关于C++利用两个栈实现队列的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • C++标准模板库vector的常用操作

    C++标准模板库vector的常用操作

    今天小编就为大家分享一篇关于C++标准模板库vector的常用操作,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++实现获取邮件中的附件

    C++实现获取邮件中的附件

    这篇文章主要为大家详细介绍了如何通过C++实现获取邮件文件中的附件,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • C++实现图的遍历算法(DFS,BFS)的示例代码

    C++实现图的遍历算法(DFS,BFS)的示例代码

    本文给大家带来的是图遍历的算法,DFS(深度优先遍历),BFS(广度优先遍历)。这两个算法是比较重要和常用的算法,但是在图中的实现只是最基本的操作,快跟随小编一起学习一下吧
    2022-07-07
  • 深入探究C++ string的内部究竟是什么样的

    深入探究C++ string的内部究竟是什么样的

    这篇文章主要给大家介绍了关于C++ string的内部究竟是什么样的,文中通过示例代码的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • C++右移运算符的一个小坑及解决

    C++右移运算符的一个小坑及解决

    文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数
    2025-09-09
  • C语言常见排序算法之插入排序(直接插入排序,希尔排序)

    C语言常见排序算法之插入排序(直接插入排序,希尔排序)

    这篇文章介绍C语言常见排序算法之插入排序(直接插入排序,希尔排序),主要分享介绍的是插入排序的两种常用算法,直接插入排序和希尔排序,需要的朋友可以参考一下
    2022-07-07
  • CISBitmap派生的VC++位图透明类实例

    CISBitmap派生的VC++位图透明类实例

    这篇文章主要介绍了CISBitmap派生的VC++位图透明类,比较实用的功能,需要的朋友可以参考下
    2014-08-08
  • C语言数据结构之循环链表的简单实例

    C语言数据结构之循环链表的简单实例

    这篇文章主要介绍了C语言数据结构之循环链表的简单实例的相关资料,需要的朋友可以参考下
    2017-06-06

最新评论