- 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