Quiet
  • 主页
  • 归档
  • 分类
  • 标签
  • 链接
  • 关于我

bajiu

  • 主页
  • 归档
  • 分类
  • 标签
  • 链接
  • 关于我
Quiet主题
  • CPP

Cpp版本差异与选择

bajiu
青年大学习

2025-11-13 20:28:00

🎁 一句话总结

新手首选 C++17;做高性能开发再上 C++20。

🧩 0. 为什么 C++ 有多个版本?

C++ 的目标是:

  1. 极致性能(媲美 C)
  2. 更安全的内存管理
  3. 更强表达能力(泛型/类/模板)
  4. 更适合大型工程

C++98/03 存在大量痛点:

  • 内存泄漏风险大
  • 没有标准线程库
  • 模板报错难读
  • 语法过于复杂
  • 标准库太少(文件系统、并发等)

所以现代 C++(从 C++11 开始)不断演化改善这些问题。


🟦 1. C++11 —— 现代 C++ 的“重生”(必须掌握)

C++11 是现代 C++ 的基础,包含大量革命性更新。

⭐ 1.1 auto 类型推导(解决类型过长问题)

旧时代:

std::vector<int>::iterator it;

现代:

auto it = vec.begin();

⭐ 1.2 lambda 表达式(更像 JS 的回调函数)

auto add = [](int a, int b){ return a + b; };

⭐ 1.3 智能指针(解决内存泄漏问题)

auto p = std::make_unique<int>(10);

⭐ 1.4 标准线程库(终于有了跨平台线程)

std::thread t([]{ std::cout << "hi"; });
t.join();

⭐ 1.5 移动语义(性能巨大提升)

std::string b = std::move(a);

🟩 2. C++14 —— C++11 的增强版(简单易学)

⭐ 2.1 auto lambda 参数

auto f = [](auto a, auto b){ return a + b; };

⭐ 2.2 make_unique

auto p = std::make_unique<int>(5);

⭐ 2.3 更强 constexpr


🟨 3. C++17 —— 工程界最常用(新手最推荐)

⭐ 3.1 std::optional

std::optional<int> id;

⭐ 3.2 std::variant

std::variant<int, std::string> v = 1;
v = "hello";

⭐ 3.3 std::string_view

std::string_view sv = str;

⭐ 3.4 结构化绑定

auto [x, y] = point;

⭐ 3.5 if constexpr

if constexpr (std::is_integral_v<T>) {}

⭐ 3.6 std::filesystem

for (auto& p : std::filesystem::directory_iterator(".")) {}

🟧 4. C++20 —— 下一代主流

⭐ 4.1 Concepts

template <Sortable T>
void sort(T&);

⭐ 4.2 Ranges

auto r = vec
    | std::views::filter(...)
    | std::views::transform(...);

⭐ 4.3 协程 Coroutines

co_await asyncTask();

⭐ 4.4 Modules


🟥 5. C++23 —— 完善版

⭐ 5.1 std::expected

std::expected<int, Error> result;

⭐ 5.2 std::print()

std::print("Hello {}\n", "world");

🧭 6. 如何选择 C++ 版本?

场景 推荐版本
新手学习 C++17
AI/游戏/音视频 C++20
旧项目 C++14 / C++17
企业跨平台 C++17

🔧 7. 编译器选择

系统 编译器
Windows MSVC(VS2022)
Linux g++ 12+
macOS Clang
跨平台 Clang 14+

🎓 8. 新手学习顺序(C++17)

  1. 基础语法
  2. 类与对象
  3. 智能指针(RAII)
  4. STL 容器
  5. lambda
  6. 多线程
  7. C++17 特性(optional/variant/string_view/filesystem)
  8. 进阶 C++20(协程/Ranges/Concepts)

上一篇

安装c++17

下一篇

前端全栈技术栈全景图

©2025 By bajiu.