7.1 KiB
7.1 KiB
学完 std,你基本上已经掌握了 C++ 标准库的核心内容。但如果你想系统地掌握 C++,不仅仅是 std,还包括以下几个大的模块/主题:
✅ 一、C++ 标准库(Standard Library)
这是你正在学的内容,包括:
1. STL(Standard Template Library)💡
- 容器(
vector,list,map,set, …) - 算法(
sort,find,for_each, …) - 迭代器(
iterator,reverse_iterator, …) - 函数对象(
std::less,std::greater, …) - 配接器(
stack,queue,priority_queue) - 分配器(了解即可)
2. 其他 std 模块 ✨
- 智能指针(
shared_ptr,unique_ptr,weak_ptr) - 时间库(
<chrono>) - 文件和 IO 流(
<fstream>,<iostream>,<sstream>) - 字符串处理(
std::string,std::string_view, …) - 正则表达式(
<regex>) - 并发支持(
<thread>,std::mutex,std::atomic, …) - 错误处理(异常
try/catch,<stdexcept>,error_code) - 数值库(
<cmath>,<numeric>,<random>) - 元编程和类型特性(
<type_traits>,std::enable_if,std::is_same等)
✅ 二、C++ 语言特性(不是库,是语法层面的东西)
- 基本语法(变量、函数、控制流)
- 面向对象(类、继承、多态、虚函数)
- 模板(函数模板、类模板、模板特化、SFINAE)
- Lambda 表达式
- 异常处理(
try-catch) - 引用、指针、智能指针
- constexpr、auto、decltype、range-based for、结构化绑定(C++17)
- 类型推导与
decltype(auto) - Rvalue 引用和移动语义(C++11+)
- 协程(C++20)
✅ 三、现代 C++ 标准版本
- C++98/03:经典 STL
- C++11:智能指针、
auto、nullptr、Lambda、std::thread - C++14:泛型 Lambda、返回类型推导
- C++17:结构化绑定、
if constexpr、std::optional - C++20:协程、concepts、ranges、
std::format - C++23:
std::expected,std::mdspan, 模块化初步
✅ 四、第三方库(超越 std 的工具)
虽然不是 std,但你之后可以学:
- Boost(准标准库,很多后来被 C++ 标准采纳)
- fmt(现代格式化库,比
printf和std::cout更强) - spdlog(日志库)
- Eigen / Armadillo(矩阵运算)
- Qt(GUI 和跨平台开发)
- OpenCV(图像处理)
- JSON for Modern C++(
nlohmann::json)
✅ 五、其他知识
- 构建工具(CMake)
- 编译过程和链接过程
- 单元测试(如 Google Test)
- 性能优化(内存、CPU、并发)
- 调试技巧(GDB, Valgrind, Visual Studio 等)
✅ 六、实战项目建议
- 数据结构与算法练习(如 LeetCode)
- 实现一个简单的 web server(理解并发)
- 编写一个图形界面工具(用 Qt)
- 实现一个简易数据库(理解数据结构、文件操作)
- 游戏开发小项目
如果你想,我可以为你规划一个完整的学习路径,从 std 到现代 C++ 实战。是否需要?
很好,我们将为你规划一个从 std 到现代 C++ 实战的完整学习路径。这个路径将涵盖:
- C++ 标准库(
std) - 现代 C++ 特性(C++11~C++23)
- 实战技能与项目能力提升
- 与操作系统、硬件、网络等系统知识的衔接(进阶)
- 职业级开发者所需的软/硬技能
🧭 阶段 1:掌握 C++ 标准库(std)
1. 容器(Containers)
- 顺序容器:
vector,deque,list,array,forward_list - 关联容器:
set,multiset,map,multimap - 无序关联容器:
unordered_set,unordered_multiset,unordered_map,unordered_multimap - 容器适配器:
stack,queue,priority_queue
2. 迭代器(Iterators)
- 输入、输出、前向、双向、随机访问迭代器
iterator_traits,reverse_iterator,insert_iterator等适配器begin(),end(),rbegin(),rend()
3. 算法( 与 )
- 非变异算法:
find,count,all_of,any_of,none_of等 - 变异算法:
sort,reverse,rotate,partition,unique等 - 数值算法:
accumulate,inner_product,iota等
4. 函数对象与 Lambda
std::function,std::bind,std::ref- lambda 表达式捕获、泛型 lambda
- 比较器、自定义函数对象
5. 字符串与字符串流
std::string,std::wstringstd::stringstream,std::ostringstream,std::istringstream
6. 时间与日期()
std::chrono::duration,system_clock,steady_clocksleep_for,sleep_until
7. 智能指针
std::unique_ptr,std::shared_ptr,std::weak_ptrmake_unique,make_shared
8. 输入输出()
std::cin,std::cout,std::cerr,std::getline- 文件 I/O:
<fstream>
9. 异常处理
try,catch,throwstd::exception, 自定义异常类
10. 其他有用工具
<tuple>,<pair>,<optional>,<variant><bitset>,<array>,<any>,<stacktrace>,<source_location><memory>,<type_traits>,<limits>,<functional>,<utility>
🚀 阶段 2:现代 C++(C++11 - C++23)
1. C++11
auto,nullptr,enum class- 右值引用与移动语义
std::thread,std::mutex,std::atomiclambda,range-based for,initializer_listconstexpr,static_assert
2. C++14
- 泛型 lambda(auto 参数)
std::make_unique- 二进制字面量、返回类型推导(
auto f() -> int)
3. C++17
std::optional,std::variant,std::string_view- if constexpr, structured bindings (
auto [a, b] = ...) - 内联变量
inline static
4. C++20
- 协程(
co_await,co_yield,co_return) - ranges 库:
std::ranges::views::filter,transform - 概念(Concepts):
requires - 模块化支持、三向比较
<=>
5. C++23
std::expected,mdspan,stacktrace,std::print- 扩展的 ranges 和协程支持
- 模块进一步优化
🧪 阶段 3:C++ 实战能力构建
小项目建议
- 学生管理系统(用 map 和 vector 实现)
- 快速文件搜索器(使用 unordered_map 和正则表达式)
- 图形化贪吃蛇(用 SDL + C++)
- 简易 Web 服务器(socket + 多线程)
实战技能
- 调试:GDB、Visual Studio Debug、Valgrind
- 构建系统:Makefile, CMake
- 测试框架:GoogleTest, Catch2
- 性能分析:perf, gprof, cppcheck
- 代码风格:ClangFormat, Git + Lint
🧱 阶段 4:系统层知识融合(进阶)
- 操作系统原理
- 内存管理 / 虚拟内存
- 线程、协程与并发模型
- 计算机网络(Socket、HTTP 协议)
- C++ 与汇编互操作(内联汇编)
- 现代架构与设计模式(SOLID、MVC)
🧑💻 阶段 5:面向职业开发
- 项目经验 + 开源贡献(GitHub)
- LeetCode、牛客刷题(加强算法)
- 简历准备 + 面试训练
- 学习 Rust/Go/Python 等现代语言进行对比
如果你希望,我可以按这个路径,逐阶段为你布置学习计划,每一阶段配上知识点 + 练习 + 小项目,帮助你掌握并实践。
是否希望我从【阶段 1:std 学习计划】开始布置?