Skip to content

C++ 特性参考卡

覆盖 C++98 至 C++23 全部主要特性的结构化速查索引。已有参考卡的特性可直接点击跳转,查看核心 API 签名、最小可编译示例、嵌入式适用性和编译器支持信息。尚未创建参考卡的特性以纯文本列出,后续批次逐步补充。

遇到某个特性想快速查语法?来这里。想系统学习?去看对应卷的教程文章。

快速导航

按标准版本:C++98/03 | C++11 | C++14 | C++17 | C++20 | C++23

按功能类别:内存管理 | 容器与视图 | 并发 | 核心语言特性 | 模板与元编程

图例

  • 适用性:高 = 嵌入式强烈推荐,中 = 按场景选用,低 = 通常不需要
  • 蓝色链接 = 已有参考卡,纯文本 = 参考卡待补充
  • 头文件栏标注"语言特性"表示无需 #include 的核心语言机制

按标准版本

C++98/03

C++98(ISO/IEC 14882:1998)是第一个 ISO 标准化版本,奠定了 STL 容器/算法/迭代器三大支柱、异常处理、命名空间和模板等核心机制——这些特性至今仍是 C++ 编程的日常基础设施。C++03 是缺陷修复版本,仅澄清了值初始化语义等细节,无重大新特性。

特性头文件简述适用性
STL 容器 (vector, list, deque, map, set...)<vector>顺序/关联/无序容器族
STL 算法 (sort, find, transform...)<algorithm>排序/查找/变换等通用算法
STL 迭代器<iterator>统一遍历接口
std::string<string>可变长度字符串
iostream<iostream>类型安全的 I/O 流
RAII (构造/析构/拷贝语义)语言特性资源获取即初始化
异常处理 (try/catch/throw)语言特性结构化错误处理
命名空间 (namespace)语言特性防止名称冲突
类模板 / 函数模板语言特性泛型编程基础
运算符重载语言特性自定义类型运算行为
函数对象 (仿函数)<functional>可调用对象与适配器
RTTI (dynamic_cast, typeid)<typeinfo>运行时类型识别
std::complex / std::valarray<complex>数值计算支持

C++11

C++11 是现代 C++ 的起点,带来了 lambda、auto、移动语义、智能指针、并发支持库等革命性特性。从这一版开始,C++ 从"带类的 C"进化为真正的高效抽象语言——这是学习 Modern C++ 的第一站。

特性头文件简述适用性
std::unique_ptr<memory>独占所有权智能指针
std::shared_ptr<memory>共享所有权智能指针
std::weak_ptr<memory>打破 shared_ptr 循环引用
lambda 表达式语言特性匿名函数对象
auto语言特性自动类型推导
decltype语言特性表达式类型查询
constexpr语言特性编译期常量与函数
范围 for (range-for)语言特性容器遍历语法糖
移动语义 (右值引用)语言特性资源转移而非拷贝
std::move / std::forward<utility>移动与完美转发工具
nullptr语言特性类型安全的空指针常量
enum class语言特性作用域强类型枚举
override / final语言特性虚函数显式标注
static_assert语言特性编译期断言
可变参数模板语言特性任意数量模板参数
std::initializer_list<initializer_list>统一初始化列表
std::array<array>编译期固定大小数组
std::tuple<tuple>异构固定大小容器
std::unordered_map / set<unordered_map>哈希表容器
std::function<functional>多态函数包装器
用户自定义字面量语言特性自定义字面量后缀
委托/继承构造语言特性构造函数复用
alignas / alignof语言特性对齐控制与查询
std::thread<thread>平台无关线程
std::mutex / lock_guard<mutex>互斥锁与 RAII 锁
std::atomic<atomic>无锁原子操作
std::condition_variable<condition_variable>条件变量同步
std::future / async<future>异步任务与结果获取
std::chrono<chrono>时间库

C++14

C++14 是对 C++11 的完善与打磨——放宽 constexpr 限制、引入泛型 lambda 和 std::make_unique。改动不大但实用性强,几乎所有特性在嵌入式开发中都能直接使用。

特性头文件简述适用性
std::make_unique<memory>异常安全的 unique_ptr 创建
泛型 lambda语言特性lambda 参数使用 auto
返回类型推导 (auto return)语言特性函数返回值 auto 推导
constexpr 扩展语言特性放宽 constexpr 限制(循环/局部变量)
decltype(auto)语言特性完美转发返回类型推导
std::exchange<utility>替换并返回旧值
std::integer_sequence<utility>编译期整数序列
二进制字面量 (0b)语言特性0b 前缀二进制整数
数位分隔符 (')语言特性撇号分隔数字提升可读性
std::shared_timed_mutex<shared_mutex>定时共享互斥锁

C++17

C++17 引入了结构化绑定、if constexpr、string_view、optional、variant 等高频特性,显著提升了日常编码的表达力。CTAD 和保证拷贝消除了大量样板代码,std::filesystem 补齐了文件操作的短板。

特性头文件简述适用性
std::optional<optional>可选值包装
std::variant<variant>类型安全的联合体
std::string_view<string_view>零拷贝字符串视图
std::any<any>类型安全的任意值容器
std::filesystem<filesystem>文件系统操作
结构化绑定语言特性多返回值解构
if constexpr语言特性编译期条件分支
折叠表达式语言特性参数包展开运算
CTAD语言特性类模板参数推导
保证拷贝消除语言特性强制消除临时对象拷贝
std::invoke<functional>统一调用接口
std::apply<tuple>tuple 展开为函数参数
内联变量语言特性头文件中定义全局变量
std::byte<cstddef>独立字节类型
std::pmr 内存资源<memory_resource>多态分配器内存资源
std::shared_mutex<shared_mutex>读写锁
嵌套命名空间 (A::B::C)语言特性命名空间简写
if/switch 初始化语句语言特性条件语句内变量声明

C++20

C++20 是继 C++11 之后最大的更新:Concepts、Ranges、Coroutines、Modules 四大特性彻底改变了模板编程、数据管道、异步流程和代码组织方式。同时 std::format、std::span、三路比较等特性显著改善了日常开发体验。编译器支持要求较高(GCC 10+ / Clang 10+)。

特性头文件简述适用性
Concepts<concepts>编译期模板参数约束
Ranges<ranges>组合式范围与视图
std::span<span>连续序列的非拥有视图
std::format<format>类型安全的格式化输出
std::jthread<thread>自动 join 的线程类
三路比较 (<=>)<compare>统一比较运算符
Coroutines<coroutine>无栈协程
Modules语言特性替代头文件的编译单元
consteval语言特性强制编译期求值
constinit语言特性编译期静态变量初始化
std::source_location<source_location>编译期源码位置信息
指定初始化器语言特性按成员名初始化聚合体
std::atomic_ref<atomic>原子引用操作
std::latch / barrier<latch>线程同步原语
std::stop_token<stop_token>协作式线程取消
std::erase / erase_if<vector>容器元素删除统一接口
std::is_constant_evaluated<type_traits>检测编译期求值上下文
range-for 初始化语句语言特性range-for 带初始化

C++23

C++23 对 C++20 进行打磨与补齐:std::expected、std::print、std::generator、std::flat_map 等实用库组件填补了关键空白,deducing this 等语言改进精简了成员函数的写法。部分特性编译器支持仍在推进中(GCC 14+ / Clang 18+)。

特性头文件简述适用性
std::expected<expected>错误处理包装类型
std::print / println<print>格式化输出到 stdout
std::generator<generator>协程同步生成器
std::flat_map / flat_set<flat_map>基于连续存储的有序容器
std::mdspan<mdspan>多维数组非拥有视图
std::stacktrace<stacktrace>调用栈捕获与打印
deducing this语言特性显式对象参数推导
std::to_underlying<utility>枚举转底层类型
std::out_ptr / inout_ptr<memory>智能指针与 C 指针互操作
optional monadic 操作<optional>and_then / or_else / transform
Ranges 新适配器<ranges>zip / chunk / slide / enumerate 等
if consteval语言特性编译期求值条件判断
std::unreachable<utility>标记不可达代码
多维下标运算符语言特性operator[] 接受多参数
std::is_scoped_enum<type_traits>检测作用域枚举类型

按功能类别

内存管理

智能指针、可选值、错误处理等内存与资源管理相关特性。详见 内存管理参考卡

特性版本头文件简述适用性
std::unique_ptrC++11<memory>独占所有权智能指针
std::shared_ptrC++11<memory>共享所有权智能指针
std::weak_ptrC++11<memory>打破 shared_ptr 循环引用
std::make_uniqueC++14<memory>异常安全的 unique_ptr 创建
std::optionalC++17<optional>可选值包装
std::pmr 内存资源C++17<memory_resource>多态分配器内存资源
std::expectedC++23<expected>错误处理包装类型
std::out_ptr / inout_ptrC++23<memory>智能指针与 C 指针互操作
optional monadic 操作C++23<optional>and_then / or_else / transform
待补充参考卡

以下特性尚未创建参考卡:std::weak_ptr、std::pmr 内存资源、std::out_ptr / inout_ptr、optional monadic 操作

容器与视图

标准容器、视图、字符串、格式化、算法等数据组织与操作特性。详见 容器与视图参考卡

特性版本头文件简述适用性
STL 容器 (vector, list, deque, map, set...)C++98<vector>顺序/关联/无序容器族
STL 算法C++98<algorithm>排序/查找/变换等通用算法
std::stringC++98<string>可变长度字符串
std::arrayC++11<array>编译期固定大小数组
std::tupleC++11<tuple>异构固定大小容器
std::unordered_map / setC++11<unordered_map>哈希表容器
std::functionC++11<functional>多态函数包装器
std::string_viewC++17<string_view>零拷贝字符串视图
std::variantC++17<variant>类型安全的联合体
std::anyC++17<any>类型安全的任意值容器
std::filesystemC++17<filesystem>文件系统操作
RangesC++20<ranges>组合式范围与视图
std::spanC++20<span>连续序列的非拥有视图
std::formatC++20<format>类型安全的格式化输出
std::erase / erase_ifC++20<vector>容器元素删除统一接口
std::flat_map / flat_setC++23<flat_map>基于连续存储的有序容器
std::generatorC++23<generator>协程同步生成器
std::print / printlnC++23<print>格式化输出到 stdout
std::mdspanC++23<mdspan>多维数组非拥有视图
Ranges 新适配器C++23<ranges>zip / chunk / slide / enumerate 等
待补充参考卡

以下特性尚未创建参考卡:STL 容器、STL 算法、std::string、std::tuple、std::unordered_map/set、std::function、std::any、Ranges、std::erase/erase_if、std::mdspan、Ranges 新适配器

并发

线程、锁、原子操作、同步原语等并发与多线程特性。详见 并发参考卡

特性版本头文件简述适用性
std::threadC++11<thread>平台无关线程
std::mutex / lock_guardC++11<mutex>互斥锁与 RAII 锁
std::atomicC++11<atomic>无锁原子操作
std::condition_variableC++11<condition_variable>条件变量同步
std::future / asyncC++11<future>异步任务与结果获取
std::chronoC++11<chrono>时间库
std::shared_timed_mutexC++14<shared_mutex>定时共享互斥锁
std::shared_mutexC++17<shared_mutex>读写锁
std::jthreadC++20<thread>自动 join 的线程类
std::atomic_refC++20<atomic>原子引用操作
std::latch / barrierC++20<latch>线程同步原语
std::stop_tokenC++20<stop_token>协作式线程取消
待补充参考卡

以下特性尚未创建参考卡:std::condition_variable、std::future / async、std::chrono、std::shared_timed_mutex、std::shared_mutex、std::atomic_ref、std::latch / barrier、std::stop_token

核心语言特性

关键字、语法糖、类型系统、编译期机制等核心语言特性。详见 核心语言参考卡

特性版本头文件简述适用性
RAII (构造/析构/拷贝)C++98语言特性资源获取即初始化
异常处理C++98语言特性结构化错误处理
命名空间C++98语言特性防止名称冲突
运算符重载C++98语言特性自定义类型运算行为
iostreamC++98<iostream>类型安全的 I/O 流
lambda 表达式C++11语言特性匿名函数对象
autoC++11语言特性自动类型推导
decltypeC++11语言特性表达式类型查询
constexprC++11语言特性编译期常量与函数
范围 forC++11语言特性容器遍历语法糖
移动语义 (右值引用)C++11语言特性资源转移而非拷贝
std::move / std::forwardC++11<utility>移动与完美转发工具
nullptrC++11语言特性类型安全的空指针
enum classC++11语言特性作用域强类型枚举
override / finalC++11语言特性虚函数显式标注
static_assertC++11语言特性编译期断言
用户自定义字面量C++11语言特性自定义字面量后缀
委托/继承构造C++11语言特性构造函数复用
alignas / alignofC++11语言特性对齐控制与查询
泛型 lambdaC++14语言特性lambda 参数使用 auto
返回类型推导C++14语言特性函数返回值 auto
constexpr 扩展C++14语言特性放宽 constexpr 限制
decltype(auto)C++14语言特性完美转发返回类型推导
二进制字面量C++14语言特性0b 前缀二进制整数
结构化绑定C++17语言特性多返回值解构
if constexprC++17语言特性编译期条件分支
CTADC++17语言特性类模板参数推导
保证拷贝消除C++17语言特性强制消除临时对象拷贝
内联变量C++17语言特性头文件定义全局变量
std::byteC++17<cstddef>独立字节类型
嵌套命名空间C++17语言特性A::B::C 简写
if/switch 初始化语句C++17语言特性条件语句内变量声明
三路比较 (<=>)C++20<compare>统一比较运算符
CoroutinesC++20<coroutine>无栈协程
ModulesC++20语言特性替代头文件
constevalC++20语言特性强制编译期求值
constinitC++20语言特性编译期静态初始化
std::source_locationC++20<source_location>编译期源码位置
指定初始化器C++20语言特性按成员名初始化聚合体
deducing thisC++23语言特性显式对象参数推导
std::to_underlyingC++23<utility>枚举转底层类型
std::unreachableC++23<utility>标记不可达代码
if constevalC++23语言特性编译期求值条件判断
多维下标运算符C++23语言特性operator[] 多参数
std::stacktraceC++23<stacktrace>调用栈捕获与打印
待补充参考卡

以下特性尚未创建参考卡:移动语义、static_assert、用户自定义字面量、委托/继承构造、alignas / alignof、返回类型推导、constexpr 扩展、decltype(auto)、二进制字面量、CTAD、保证拷贝消除、std::byte、if/switch 初始化语句、consteval、constinit、std::source_location、指定初始化器、std::to_underlying、std::unreachable、if consteval、多维下标运算符、std::stacktrace

模板与元编程

模板、约束、类型特征、编译期计算等泛型编程与元编程特性。详见 模板与元编程参考卡

特性版本头文件简述适用性
类模板 / 函数模板C++98语言特性泛型编程基础
可变参数模板C++11语言特性任意数量模板参数
std::initializer_listC++11<initializer_list>统一初始化列表
std::integer_sequenceC++14<utility>编译期整数序列
折叠表达式C++17语言特性参数包展开运算
std::invokeC++17<functional>统一调用接口
std::applyC++17<tuple>tuple 展开为函数参数
ConceptsC++20<concepts>编译期模板参数约束
std::is_constant_evaluatedC++20<type_traits>检测编译期上下文
std::is_scoped_enumC++23<type_traits>检测作用域枚举
待补充参考卡

以下特性尚未创建参考卡:std::integer_sequence、std::invoke、std::apply、std::is_constant_evaluated、std::is_scoped_enum


部分内容参考自 cppreference.com,采用 CC-BY-SA 4.0 许可

基于 VitePress 构建