一文梳理 C++11 至 C++23 新特性合集(含代码示例 + 推荐资源)C++ 新特性的中文GitHub笔记

一文梳理 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 也是 int

2. 智能指针

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::optionalstd::variantstd::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++20concepts、ranges、协程
C++23expected、print、flat_map、generator
随着 C++ 标准不断演进,现代 C++ 已经变得更简洁、更强大、更实用。
掌握这些新特性,不仅能写出更现代的代码,也能在面试和项目开发中脱颖而出。

📎 附:项目地址(建议收藏)
👉 https://github.com/0voice/cpp_new_features
我个人也将其作为学习参考资料持续更新,欢迎一起交流和探讨。如果觉得有帮助,给项目点个 ⭐ 支持作者继续维护吧!


如果你觉得这篇文章有帮助,欢迎点赞 / 收藏 / 评论交流,我会继续分享更多现代 C++ 工程实践、面试指南、开源推荐等内容。

💬 你觉得最实用的 C++ 新特性是哪个?欢迎评论区交流。

Read more

网络的新语言:Google 的 Web MCP 如何让每个网站都为智能体做好准备

多年来,网络是为人类的眼睛而构建的。点击这里,滚动那里,填写这个表单。每一个设计决策——颜色、布局、交互元素——都是为坐在屏幕前的人优化的。 但有些事情正在发生变化。智能体正在进入网络,而大多数网站还没有为它们做好准备。 问题:智能体在“盲目浏览” 想象一下,你拥有一个电商网站,并希望 AI 智能体能够使用它——搜索商品、添加到购物车、完成购买。在一个数百万智能体代表用户浏览网页并执行操作的未来,你的网站是否对这些智能体友好,可能决定你的业务成败。 今天,你有两个选择,但都不理想。 第一个是构建你自己的 MCP 服务器,并希望所有智能体都恰好安装了它。这几乎不可能发生。没有任何一个网站重要到可以被预加载进每个智能体的工具集中,成为永久组件。 第二个选择是依赖智能体的浏览器操作能力——让它截图、解析原始 HTML,然后自己判断该点击什么。这种方式正在变好,但从根本上说它是“非确定性的”。智能体需要在为人类设计的大量 HTML 代码中摸索:导航栏、广告位、

By Ne0inhk

芋道项目部署:前端写死后端地址 vs Nginx 反向代理

两种方式的区别、风险与完整配置(小白也能照做) 很多同学第一次部署芋道(Ruoyi-Vue-Pro / 芋道源码)这种前后端分离项目,常见两种访问方式: 1. 前端直接请求后端域名(把 API 地址写死成 https://api.xxx.com) 2. 前端只请求自身域名,Nginx 反向代理转发到后端(前端写 /api,Nginx 转发到 127.0.0.1:48081) 这两种都能跑起来,但生产环境推荐的做法很明确: ✅ Nginx 反向代理(同域转发)更稳、更安全、更省心。 下面用 芋道项目为例,带你从 0 配置到可用,并解释常见坑(比如你遇到的:为什么页面里会看到 localhost)。 1. 两种方式是什么?(先把概念讲明白)

By Ne0inhk

Ruby Web Service

Ruby Web Service 引言 随着互联网技术的飞速发展,Web服务已成为企业间数据交换和通信的重要方式。Ruby作为一种高效、灵活的编程语言,在Web服务开发领域有着广泛的应用。本文将详细介绍Ruby Web Service的基本概念、实现方式以及在实际应用中的优势。 一、Ruby Web Service概述 1.1 定义 Ruby Web Service是指使用Ruby语言开发的,用于实现网络服务的应用程序。这些服务通常通过HTTP协议进行数据交换,提供RESTful API或SOAP接口,以支持各种客户端(如Web浏览器、移动应用等)访问。 1.2 分类 根据实现方式,Ruby Web Service主要分为以下几类: 1. RESTful Web Service:基于REST(Representational State Transfer)架构风格,通过HTTP协议进行数据交换。 2. SOAP

By Ne0inhk

openclaw 钉钉 Webhook 完全指南

📮 钉钉 Webhook 完全指南 整理者:✨ 小琳 | 更新于 2026-02-05 一、基础知识 Webhook vs 插件 方式优点缺点OpenClaw 插件集成简单,双向通信只能回复,不能主动发Webhook 机器人支持主动推送,格式丰富单向,需要自己处理签名 结论:需要主动推送消息时,用 Webhook。 消息格式支持 格式插件Webhook纯文本✅✅Markdown✅✅链接卡片❌✅按钮卡片❌✅@ 用户❌✅ 二、@ 用户功能 核心原理 两个地方必须同时设置: 1. 消息内容中包含 @手机号 或 @所有人 2. JSON 的 at 字段中指定 atMobiles 或 isAtAll 缺一不可! JSON 示例 @ 所有人:

By Ne0inhk