- Published on
C++11/14/17/20 核心特性速查表
C++11(革命性更新)
| 类别 | 特性 | 作用 |
|---|---|---|
| 智能指针 | std::unique_ptr, std::shared_ptr | 自动内存管理,避免泄漏。 |
| 移动语义 | 移动构造函数、std::move | 提升性能(避免深拷贝),支持资源转移。 |
| Lambda | [capture](args){code} | 匿名函数,简化回调、STL算法(如sort)。 |
| 类型推导 | auto, decltype | 简化代码,增强泛型编程。 |
| 范围for循环 | for(auto x : container) | 简化容器遍历。 |
| 右值引用 | T&& | 支持完美转发(std::forward),优化临时对象处理。 |
| 多线程 | <thread>, <mutex>, <future> | 原生多线程支持。 |
| 变长模板 | template<typename... Args> | 支持参数包(如std::tuple)。 |
C++14(小优化)
| 类别 | 特性 | 作用 |
|---|---|---|
| 泛型Lambda | auto 参数 | Lambda支持自动类型推导(如[](auto x){...})。 |
| 返回类型推导 | auto func() | 函数返回值自动推导(需保证一致性)。 |
| 二进制字面量 | 0b1010 | 直接书写二进制数。 |
| 数字分隔符 | 1'000'000 | 提高大数可读性。 |
C++17(实用增强)
| 类别 | 特性 | 作用 |
|---|---|---|
| 结构化绑定 | auto [x,y] = pair(1,2); | 解构元组/结构体,简化多返回值处理。 |
std::optional | std::optional<T> | 表示可选值(替代nullptr或无效状态)。 |
std::variant | std::variant<A,B> | 类型安全的联合体。 |
std::string_view | 非拥有字符串视图 | 避免不必要的字符串拷贝。 |
| 并行STL | std::execution::par | 支持并行算法(如sort)。 |
| 内联变量 | inline constexpr int x = 42; | 头文件中定义常量无需担心重复链接。 |
C++20(重大更新)
| 类别 | 特性 | 作用 |
|---|---|---|
| 概念(Concepts) | template<typename T> requires ... | 约束模板参数,提升编译错误可读性。 |
| 协程(Coroutines) | co_await, co_yield | 简化异步编程(如生成器、异步I/O)。 |
| Ranges库 | std::ranges::sort(v) | 链式操作(如views::filter),更优雅的容器处理。 |
| 模块(Modules) | import std.core; | 替代头文件,加速编译。 |
std::format | std::format("{}", 42) | 类型安全的字符串格式化(类似Python)。 |
| 三路比较 | <=> | 简化比较运算符重载。 |
一句话总结:
• C++11:从“C with Classes”到现代C++的转折点。
• C++14/17:查漏补缺,增强实用性。
• C++20:迈向抽象化、高性能并发的未来。
THE END