一文梳理 C++11 至 C++23 新特性合集(含代码示例 + 推荐资源)C++ 新特性的中文GitHub笔记
现代 C++ 每一次升级都带来了大量新语法和库增强,但资料分散、文档晦涩,导致不少工程师对 C++11、14、17、20、23 的实际差异和使用方法了解不清。
本文将系统整理 C++11 到 C++23 的重要特性,提供示例代码与使用场景,最后推荐一个高质量开源项目,助你快速上手现代 C++ 编程。
🔧 一、C++11:现代 C++ 的起点
1. 类型推导 auto / decltype
auto x =10;// 推导为 intdecltype(x) y =20;// y 也是 int2. 智能指针
std::unique_ptr<int> p1 = std::make_unique<int>(10); std::shared_ptr<int> p2 = std::make_shared<int>(20);3. Lambda 表达式
auto add =[](int a,int b){return a + b;};4. 并发支持
std::thread t([]{ std::cout <<"Thread\n";}); t.join();🚀 二、C++14 ~ C++17:实用增强阶段
常用特性包括:
- 泛型 Lambda(C++14)
- 结构化绑定(C++17)
if constexpr(C++17)std::optional、std::variant、std::any(C++17)- 文件系统
<filesystem>(C++17)
auto[key, value]= std::pair<int, std::string>{1,"value"};🌟 三、C++20:语言的一次大升级
关键新特性:
concepts类型约束ranges范围库co_await / co_yield协程支持consteval、三向比较符号<=>、类模板实参推导(CTAD)
auto rng = std::views::iota(1)| std::views::take(5);🔥 四、C++23:实用主义的提升
C++23 更加关注工程落地和使用体验,补全很多实用模块。
1. std::expected<T, E> — 替代异常的新选择
std::expected<int, std::string>divide(int a,int b){if(b ==0)return std::unexpected("Zero division");return a / b;}2. std::print / std::println
std::println("Hello, {}!","World");3. if consteval 判断是否处于编译期
ifconsteval{// 编译期逻辑}else{// 运行期逻辑}4. std::generator:更接近 Python 的协程体验
std::generator<int>count(){for(int i =0; i <10;++i)co_yield i;}5. 范围库增强
for(auto[a, b]: std::views::zip(v1, v2)){...}6. std::flat_map / std::flat_set
- 使用 vector 实现的哈希表,适用于小型数据量查找
📚 五、推荐资源:一份系统整理的现代 C++ 中文笔记
👉 GitHub 项目:0voice/cpp_new_features
该项目系统整理了 C++11 到 C++23 的各类新特性,按版本归类,内容包括:
- 详细中文解释
- 配套示例代码
- 特性背景、使用建议
- 适用场景与工程案例
✅ 项目亮点:
- 结构清晰、资料完整、适合工程师实战查阅
- 支持直接 clone 学习、快速掌握新版语言特性
- 对准备 C++ 后端开发、大厂面试的同学非常友好
✅ 总结
| C++ 版本 | 关键词 |
|---|---|
| C++11 | 类型推导、智能指针、lambda、并发 |
| C++14 | 泛型 lambda、返回类型推导 |
| C++17 | 结构化绑定、optional、variant |
| C++20 | concepts、ranges、协程 |
| C++23 | expected、print、flat_map、generator |
随着 C++ 标准不断演进,现代 C++ 已经变得更简洁、更强大、更实用。
掌握这些新特性,不仅能写出更现代的代码,也能在面试和项目开发中脱颖而出。
📎 附:项目地址(建议收藏)
👉 https://github.com/0voice/cpp_new_features
我个人也将其作为学习参考资料持续更新,欢迎一起交流和探讨。如果觉得有帮助,给项目点个 ⭐ 支持作者继续维护吧!
如果你觉得这篇文章有帮助,欢迎点赞 / 收藏 / 评论交流,我会继续分享更多现代 C++ 工程实践、面试指南、开源推荐等内容。
💬 你觉得最实用的 C++ 新特性是哪个?欢迎评论区交流。