000 《C++知识框架》
C++ 知识框架 (超级全面完整版)
一级:C++ 基础 (Fundamentals)
编程基础概念 (Basic Programming Concepts)
- 程序和编程语言 (Programs and Programming Languages)
- 编译型语言 vs. 解释型语言 (Compiled vs. Interpreted Languages)
- 程序结构 (Program Structure)
- 算法和流程图 (Algorithms and Flowcharts)
- 调试和错误处理 (Debugging and Error Handling)
- 代码风格和规范 (Code Style and Conventions)
- 版本控制 (Version Control - e.g., Git)
C++ 语言基础 (C++ Language Basics)
- 基本语法 (Basic Syntax)
- 程序入口点 (
main
函数) (Entry Point -main
function) - 语句和表达式 (Statements and Expressions)
- 注释 (Comments)
- 分号和代码块 (Semicolons and Code Blocks)
- 程序入口点 (
- 数据类型 (Data Types)
- 基本数据类型 (Primitive Data Types):
int
,float
,double
,char
,bool
,void
- 整型 (Integer Types):
short
,int
,long
,long long
(signed, unsigned) - 浮点型 (Floating-point Types):
float
,double
,long double
- 字符型 (Character Type):
char
,wchar_t
,char8_t
(C++20),char16_t
,char32_t
(Unicode) - 布尔型 (Boolean Type):
bool
(true
,false
) void
类型 (Void Type)- 类型修饰符 (Type Qualifiers):
const
,volatile
,static
,extern
,mutable
- 类型转换 (Type Conversion): 隐式转换 (Implicit), 显式转换 (Explicit) -
static_cast
,dynamic_cast
,reinterpret_cast
,const_cast
- 基本数据类型 (Primitive Data Types):
- 变量和常量 (Variables and Constants)
- 变量声明和定义 (Variable Declaration and Definition)
- 变量初始化 (Variable Initialization)
- 变量作用域 (Variable Scope): 局部变量 (Local), 全局变量 (Global), 静态变量 (Static)
- 常量 (Constants): 字面常量 (Literals),
const
关键字,constexpr
(C++11), 枚举常量 (Enums)
- 运算符 (Operators)
- 算术运算符 (Arithmetic Operators):
+
,-
,*
,/
,%
,++
,--
- 关系运算符 (Relational Operators):
==
,!=
,>
,<
,>=
,<=
- 逻辑运算符 (Logical Operators):
&&
,||
,!
- 位运算符 (Bitwise Operators):
&
,|
,^
,~
,<<
,>>
- 赋值运算符 (Assignment Operators):
=
,+=
,-=
,*=
,/=
,%=
,&=
,|=
,^=
,<<=
,>>=
- 条件运算符 (Conditional Operator):
? :
- 逗号运算符 (Comma Operator):
,
- sizeof 运算符 (Sizeof Operator)
- 类型转换运算符 (Type Cast Operators)
- 成员访问运算符 (Member Access Operators):
.
,->
- 作用域解析运算符 (Scope Resolution Operator):
::
- new 和 delete 运算符 (Memory Allocation Operators):
new
,new[]
,delete
,delete[]
- 运算符优先级和结合性 (Operator Precedence and Associativity)
- 算术运算符 (Arithmetic Operators):
- 控制流 (Control Flow)
- 顺序结构 (Sequential Structure)
- 选择结构 (Selection Structures):
if
,if-else
,if-else if-else
,switch-case
- 循环结构 (Loop Structures):
for
,while
,do-while
, 范围 for 循环 (Range-based for loop - C++11) - 跳转语句 (Jump Statements):
break
,continue
,goto
,return
- 函数 (Functions)
- 函数定义和声明 (Function Definition and Declaration)
- 函数参数 (Function Parameters): 形参 (Formal), 实参 (Actual), 传值 (Pass-by-value), 传引用 (Pass-by-reference), 传指针 (Pass-by-pointer)
- 函数返回值 (Function Return Value)
- 函数重载 (Function Overloading)
- 默认参数 (Default Arguments)
- 内联函数 (Inline Functions)
- 递归函数 (Recursive Functions)
- 函数指针 (Function Pointers)
- Lambda 表达式 (Lambda Expressions - C++11)
- 数组 (Arrays)
- 一维数组 (One-dimensional Arrays)
- 多维数组 (Multidimensional Arrays)
- 数组的初始化 (Array Initialization)
- 数组作为函数参数 (Arrays as Function Arguments)
- 字符数组和字符串 (Character Arrays and C-style Strings)
- 指针 (Pointers)
- 指针的概念 (Concept of Pointers)
- 指针的声明和初始化 (Pointer Declaration and Initialization)
- 解引用 (Dereferencing)
- 指针运算 (Pointer Arithmetic)
- 指针和数组 (Pointers and Arrays)
- 指向指针的指针 (Pointers to Pointers)
- 空指针 (Null Pointers) -
nullptr
(C++11) void
指针 (Void Pointers)- 常量指针和指向常量的指针 (Constant Pointers and Pointers to Constants)
- 函数指针 (Function Pointers)
- 引用 (References)
- 引用的概念 (Concept of References)
- 引用的声明和初始化 (Reference Declaration and Initialization)
- 引用作为函数参数和返回值 (References as Function Parameters and Return Values)
- 引用 vs. 指针 (References vs. Pointers)
- 字符串 (Strings)
- C 风格字符串 (C-style strings - 字符数组)
std::string
类 (C++ Standard String Class)- 字符串操作 (String Operations): 查找, 替换, 连接, 子串, 比较
- 字符串流 (String Streams):
stringstream
,istringstream
,ostringstream
- 输入/输出 (Input/Output)
- 标准输入/输出流 (Standard Input/Output Streams):
cin
,cout
,cerr
,clog
- 格式化输入/输出 (Formatted Input/Output)
- 文件输入/输出 (File Input/Output):
ifstream
,ofstream
,fstream
- 标准输入/输出流 (Standard Input/Output Streams):
- 基本语法 (Basic Syntax)
内存管理 (Memory Management)
- 栈内存 (Stack Memory)
- 堆内存 (Heap Memory)
- 静态内存 (Static Memory)
- 动态内存分配 (Dynamic Memory Allocation):
new
,new[]
,delete
,delete[]
- 内存泄漏 (Memory Leaks)
- 智能指针 (Smart Pointers - C++11):
unique_ptr
,shared_ptr
,weak_ptr
- RAII (Resource Acquisition Is Initialization)
预处理器 (Preprocessor)
- 宏定义 (Macro Definitions):
#define
- 条件编译 (Conditional Compilation):
#if
,#ifdef
,#ifndef
,#else
,#elif
,#endif
- 文件包含 (File Inclusion):
#include
- 预定义宏 (Predefined Macros)
- pragma 指令 (Pragma Directives)
- 宏定义 (Macro Definitions):
命名空间 (Namespaces)
- 命名空间的概念 (Concept of Namespaces)
- 命名空间的定义和使用 (Namespace Definition and Usage)
- 命名空间别名 (Namespace Aliases)
using
声明和using
指令 (using
Declaration andusing
Directive)- 全局命名空间 (Global Namespace)
- 匿名命名空间 (Anonymous Namespaces)
二级:面向对象编程 (Object-Oriented Programming - OOP)
类和对象 (Classes and Objects)
- 类的定义 (Class Definition):
class
关键字 - 成员变量 (Member Variables/Data Members)
- 成员函数 (Member Functions/Methods)
- 访问修饰符 (Access Modifiers):
public
,private
,protected
- 构造函数 (Constructors): 默认构造函数, 参数化构造函数, 拷贝构造函数, 移动构造函数 (C++11)
- 析构函数 (Destructors)
- 对象创建和销毁 (Object Creation and Destruction)
this
指针 (This Pointer)- 静态成员 (Static Members): 静态成员变量, 静态成员函数
- 友元 (Friends): 友元函数, 友元类
- 常量成员函数 (Const Member Functions)
- mutable 关键字 (Mutable Keyword)
- 类的定义 (Class Definition):
封装 (Encapsulation)
- 封装的概念 (Concept of Encapsulation)
- 信息隐藏 (Information Hiding)
- 访问控制 (Access Control)
- 数据抽象 (Data Abstraction)
继承 (Inheritance)
- 继承的概念 (Concept of Inheritance)
- 基类 (Base Class/Superclass) 和派生类 (Derived Class/Subclass)
- 继承类型 (Inheritance Types):
public
,protected
,private
- 单继承 (Single Inheritance)
- 多继承 (Multiple Inheritance)
- 虚继承 (Virtual Inheritance) - 解决菱形继承问题 (Diamond Problem)
- 构造函数和析构函数在继承中的调用顺序 (Constructor and Destructor Order in Inheritance)
- 基类和派生类之间的赋值兼容性 (Assignment Compatibility between Base and Derived Classes)
final
关键字 (C++11) - 禁止继承和重写
多态 (Polymorphism)
- 多态的概念 (Concept of Polymorphism)
- 静态多态 (Static Polymorphism/编译时多态) - 函数重载, 运算符重载, 模板
- 动态多态 (Dynamic Polymorphism/运行时多态) - 虚函数 (Virtual Functions), 纯虚函数 (Pure Virtual Functions), 抽象类 (Abstract Classes)
- 虚函数表 (Virtual Function Table/vtable) 和虚指针 (Virtual Pointer/vptr)
- 抽象类和接口 (Abstract Classes and Interfaces)
- 覆盖 (Overriding) 和隐藏 (Hiding)
override
关键字 (C++11) - 显式声明重写
抽象 (Abstraction)
- 抽象的概念 (Concept of Abstraction)
- 抽象类和纯虚函数 (Abstract Classes and Pure Virtual Functions)
- 接口 (Interfaces) - 通过抽象类实现
- 设计模式中的抽象应用 (Abstraction in Design Patterns)
运算符重载 (Operator Overloading)
- 运算符重载的概念 (Concept of Operator Overloading)
- 可重载和不可重载的运算符 (Overloadable and Non-overloadable Operators)
- 重载运算符的语法 (Syntax of Operator Overloading)
- 作为成员函数重载 (Overloading as Member Functions)
- 作为友元函数重载 (Overloading as Friend Functions)
- 重载运算符的注意事项 (Considerations for Operator Overloading)
- 常见的运算符重载示例 (Common Operator Overloading Examples):
+
,-
,*
,/
,==
,!=
,<
,>
,<<
,>>
,[]
,()
,++
,--
,=
, 类型转换运算符
设计模式 (Design Patterns - OOP Principles in Practice)
- 创建型模式 (Creational Patterns): 单例模式 (Singleton), 工厂模式 (Factory), 抽象工厂模式 (Abstract Factory), 建造者模式 (Builder), 原型模式 (Prototype)
- 结构型模式 (Structural Patterns): 适配器模式 (Adapter), 桥接模式 (Bridge), 组合模式 (Composite), 装饰器模式 (Decorator), 外观模式 (Facade), 享元模式 (Flyweight), 代理模式 (Proxy)
- 行为型模式 (Behavioral Patterns): 责任链模式 (Chain of Responsibility), 命令模式 (Command), 解释器模式 (Interpreter), 迭代器模式 (Iterator), 中介者模式 (Mediator), 备忘录模式 (Memento), 观察者模式 (Observer), 状态模式 (State), 策略模式 (Strategy), 模板方法模式 (Template Method), 访问者模式 (Visitor)
- SOLID 原则 (SOLID Principles): 单一职责原则 (Single Responsibility Principle), 开闭原则 (Open/Closed Principle), 里氏替换原则 (Liskov Substitution Principle), 接口隔离原则 (Interface Segregation Principle), 依赖倒置原则 (Dependency Inversion Principle)
三级:C++ 标准模板库 (Standard Template Library - STL)
STL 概述 (STL Overview)
- STL 的组件 (STL Components): 容器 (Containers), 迭代器 (Iterators), 算法 (Algorithms), 函数对象 (Function Objects/Functors), 分配器 (Allocators), 适配器 (Adapters)
- 泛型编程 (Generic Programming)
- 模板 (Templates)
容器 (Containers)
- 序列容器 (Sequence Containers)
std::vector
(动态数组)std::deque
(双端队列)std::list
(双向链表)std::forward_list
(单向链表 - C++11)std::array
(固定大小数组 - C++11)
- 关联容器 (Associative Containers)
std::set
(集合)std::multiset
(多重集合)std::map
(映射/字典)std::multimap
(多重映射)
- 无序容器 (Unordered Containers - C++11)
std::unordered_set
(无序集合)std::unordered_multiset
(无序多重集合)std::unordered_map
(无序映射)std::unordered_multimap
(无序多重映射)
- 容器适配器 (Container Adapters)
std::stack
(栈)std::queue
(队列)std::priority_queue
(优先队列)
- 序列容器 (Sequence Containers)
迭代器 (Iterators)
- 迭代器的概念 (Concept of Iterators)
- 迭代器的种类 (Iterator Categories): 输入迭代器 (Input), 输出迭代器 (Output), 前向迭代器 (Forward), 双向迭代器 (Bidirectional), 随机访问迭代器 (Random Access)
- 迭代器操作 (Iterator Operations):
*
,++
,--
,==
,!=
,->
,+
,-
,[]
- 迭代器失效 (Iterator Invalidation)
begin()
,end()
,rbegin()
,rend()
,cbegin()
,cend()
,crbegin()
,crend()
算法 (Algorithms)
- STL 算法分类 (Algorithm Categories):
- 非修改性序列操作 (Non-modifying Sequence Operations):
for_each
,find
,find_if
,count
,count_if
,equal
,search
,search_n
,find_first_of
,adjacent_find
,mismatch
- 修改性序列操作 (Modifying Sequence Operations):
copy
,copy_if
,copy_n
,move
,move_backward
,transform
,replace
,replace_if
,fill
,fill_n
,generate
,generate_n
,remove
,remove_if
,unique
,reverse
,rotate
,random_shuffle
,partition
- 排序算法 (Sorting Algorithms):
sort
,stable_sort
,partial_sort
,nth_element
,is_sorted
- 二分搜索算法 (Binary Search Algorithms):
binary_search
,lower_bound
,upper_bound
,equal_range
- 堆算法 (Heap Algorithms):
make_heap
,push_heap
,pop_heap
,sort_heap
,is_heap
- 最小值/最大值算法 (Min/Max Algorithms):
min
,max
,min_element
,max_element
,minmax
,minmax_element
- 数值算法 (Numeric Algorithms):
accumulate
,inner_product
,adjacent_difference
,partial_sum
- 集合算法 (Set Algorithms):
set_union
,set_intersection
,set_difference
,set_symmetric_difference
- 非修改性序列操作 (Non-modifying Sequence Operations):
- 算法的使用 (Using Algorithms): 算法参数, 迭代器范围, 函数对象
- STL 算法分类 (Algorithm Categories):
函数对象 (Function Objects/Functors)
- 函数对象的概念 (Concept of Function Objects)
- 预定义的函数对象 (Predefined Function Objects) -
<functional>
头文件:plus
,minus
,multiplies
,divides
,modulus
,negate
,equal_to
,not_equal_to
,greater
,less
,greater_equal
,less_equal
,logical_and
,logical_or
,logical_not
- 自定义函数对象 (Custom Function Objects)
- Lambda 表达式作为函数对象 (Lambda Expressions as Function Objects)
- 函数适配器 (Function Adapters):
bind
,not1
,not2
,mem_fn
,ptr_fun
(部分已废弃,C++11 后更多使用 lambda 和std::bind
)
分配器 (Allocators)
- 分配器的概念 (Concept of Allocators)
- 默认分配器
std::allocator
- 自定义分配器 (Custom Allocators) - 高级主题
STL 适配器 (STL Adapters)
- 容器适配器 (Container Adapters):
stack
,queue
,priority_queue
(已在容器部分介绍) - 迭代器适配器 (Iterator Adapters):
reverse_iterator
,back_inserter
,front_inserter
,inserter
,move_iterator
- 函数适配器 (Function Adapters):
bind
,not1
,not2
,mem_fn
,ptr_fun
(已在函数对象部分提及)
- 容器适配器 (Container Adapters):
四级:现代 C++ (Modern C++) 和进阶主题 (Advanced Topics)
C++11/14/17/20 新特性 (New Features in C++11/14/17/20)
- C++11 主要特性:
- 右值引用和移动语义 (Rvalue References and Move Semantics)
- Lambda 表达式 (Lambda Expressions)
auto
类型推导 (Auto Type Deduction)- 范围 for 循环 (Range-based for loop)
nullptr
(空指针常量)constexpr
(常量表达式)static_assert
(静态断言)- 委托构造函数 (Delegating Constructors)
- 统一初始化 (Uniform Initialization) - 初始化列表
- 智能指针 (Smart Pointers):
unique_ptr
,shared_ptr
,weak_ptr
- 线程库 (Thread Library) -
<thread>
,<mutex>
,<condition_variable>
,<future>
,<atomic>
- 哈希容器 (Unordered Containers)
- C++14 主要特性:
- 泛型 Lambda 表达式 (Generic Lambda Expressions)
decltype(auto)
- 返回类型推导 (Return Type Deduction for Functions)
- 二进制字面量 (Binary Literals)
- 数字分隔符 (Digit Separators)
- C++17 主要特性:
- 折叠表达式 (Fold Expressions)
- 内联变量 (Inline Variables)
- 结构化绑定 (Structured Bindings)
if
和switch
语句的初始化器 (Initializers inif
andswitch
Statements)std::optional
,std::variant
,std::any
- 文件系统库 (Filesystem Library) -
<filesystem>
- 并行算法 (Parallel Algorithms) - 执行策略 (Execution Policies)
- C++20 主要特性:
- 概念 (Concepts)
- 范围 (Ranges)
- 协程 (Coroutines)
- 模块 (Modules)
std::format
(格式化库)std::span
(范围视图)- 指定初始化器 (Designated Initializers)
- 模板的缩写函数语法 (Abbreviated Function Templates)
- C++11 主要特性:
模板元编程 (Template Metaprogramming - TMP)
- 模板元编程的概念 (Concept of Template Metaprogramming)
- 编译时计算 (Compile-time Computation)
- 类型萃取 (Type Traits) -
<type_traits>
- SFINAE (Substitution Failure Is Not An Error)
- 静态反射 (Static Reflection - C++23 及以后)
并发与多线程 (Concurrency and Multithreading)
- 线程 (Threads) -
std::thread
- 互斥量 (Mutexes) -
std::mutex
,std::recursive_mutex
,std::timed_mutex
,std::recursive_timed_mutex
- 条件变量 (Condition Variables) -
std::condition_variable
,std::condition_variable_any
- 原子操作 (Atomic Operations) -
<atomic>
- future 和 promise -
std::future
,std::promise
,std::packaged_task
- 异步操作 (Asynchronous Operations) -
std::async
- 线程池 (Thread Pools) - 手动实现或使用库
- 并发设计模式 (Concurrency Design Patterns)
- 死锁 (Deadlocks), 活锁 (Livelocks), 竞争条件 (Race Conditions)
- 线程 (Threads) -
异常处理 (Exception Handling)
- 异常的概念 (Concept of Exceptions)
try
,catch
,throw
关键字- 异常类型 (Exception Types)
- 栈展开 (Stack Unwinding)
- 资源管理和异常安全 (Resource Management and Exception Safety)
- noexcept 规范 (Noexcept Specifier - C++11)
- 标准异常类 (Standard Exception Classes) -
<stdexcept>
泛型编程 (Generic Programming)
- 模板 (Templates): 函数模板, 类模板, 模板特化, 模板参数, 模板推导
- 概念 (Concepts - C++20) - 约束模板参数
元编程 (Metaprogramming)
- 模板元编程 (Template Metaprogramming - 已单独列出)
- 反射 (Reflection - C++23 及以后)
网络编程 (Network Programming)
- Socket 编程 (Sockets Programming)
- TCP/IP, UDP
- Boost.Asio, libuv, ASIO (Asynchronous I/O) 等库
系统编程 (System Programming)
- 进程 (Processes) 和线程 (Threads)
- 进程间通信 (Inter-Process Communication - IPC): 管道 (Pipes), 消息队列 (Message Queues), 共享内存 (Shared Memory), 信号量 (Semaphores), Socket
- 文件系统操作 (Filesystem Operations)
- 操作系统 API (Operating System APIs) - 例如 POSIX, Windows API
嵌入式系统开发 (Embedded Systems Development)
- 资源受限环境编程 (Programming in Resource-constrained Environments)
- 硬件接口 (Hardware Interfacing)
- 实时性 (Real-time) 考虑
- 交叉编译 (Cross-compilation)
性能优化 (Performance Optimization)
- 代码优化技巧 (Code Optimization Techniques)
- 性能分析工具 (Profiling Tools)
- 内存优化 (Memory Optimization)
- 编译优化选项 (Compiler Optimization Options)
- 算法和数据结构的选择 (Algorithm and Data Structure Selection)
- 缓存优化 (Cache Optimization)
- SIMD (Single Instruction, Multiple Data) - 指令集 (例如 SSE, AVX)
测试 (Testing)
- 单元测试 (Unit Testing) - Google Test, Catch2, Boost.Test 等框架
- 集成测试 (Integration Testing)
- 测试驱动开发 (Test-Driven Development - TDD)
- 持续集成 (Continuous Integration - CI)
构建系统和工具 (Build Systems and Tools)
- 编译器 (Compilers): GCC, Clang, MSVC
- 构建工具 (Build Tools): CMake, Make, Ninja, Bazel
- 包管理器 (Package Managers): Conan, vcpkg, CPM
- 静态分析工具 (Static Analysis Tools): Clang-Tidy, SonarQube
- 动态分析工具 (Dynamic Analysis Tools): Valgrind, AddressSanitizer, MemorySanitizer, ThreadSanitizer
- 调试器 (Debuggers): GDB, LLDB, Visual Studio Debugger
- 性能分析器 (Profilers): gprof, perf, VTune Amplifier
GUI 编程 (Graphical User Interface Programming)
- 跨平台 GUI 库: Qt, wxWidgets, GTK+
- Windows API (Win32, MFC, WinUI)
- 图形库 (Graphics Libraries): OpenGL, Vulkan, DirectX
游戏开发 (Game Development)
- 游戏引擎 (Game Engines): Unreal Engine, Unity (C# 但可使用 C++ 插件), Godot (C++)
- 物理引擎 (Physics Engines): Box2D, Bullet Physics, PhysX
- 图形渲染 (Graphics Rendering)
- 游戏逻辑和 AI (Game Logic and AI)
数据库编程 (Database Programming)
- 数据库连接库 (Database Connector Libraries): libpq (PostgreSQL), MySQL Connector/C++, SQLite
- ORM (Object-Relational Mapping) 框架 (例如 SOCI)
科学计算和高性能计算 (Scientific Computing and High-Performance Computing - HPC)
- 数值计算库 (Numerical Libraries): Eigen, Armadillo, GSL (GNU Scientific Library), BLAS, LAPACK
- 并行计算库 (Parallel Computing Libraries): MPI (Message Passing Interface), OpenMP, CUDA (NVIDIA), OpenCL
- 高性能计算集群 (HPC Clusters)
元数据和反射 (Metadata and Reflection)
- 静态反射 (Static Reflection - C++23 及以后)
- 运行时反射 (Runtime Reflection - 通常通过库或代码生成实现)
C++ 与其他语言的交互 (C++ Interoperability)
- C 语言互操作 (C Language Interoperability)
- Python 扩展 (Python Extensions in C++) - 例如 Cython, Pybind11, Boost.Python
- Java Native Interface (JNI)
- WebAssembly (Wasm)
五级:C++ 标准库深入 (In-depth Standard Library)
<iostream>
: 输入/输出流 (Input/Output Streams)<string>
: 字符串 (Strings)<vector>
,<deque>
,<list>
,<forward_list>
,<array>
,<set>
,<multiset>
,<map>
,<multimap>
,<unordered_set>
,<unordered_multiset>
,<unordered_map>
,<unordered_multimap>
,<stack>
,<queue>
,<priority_queue>
: STL 容器 (STL Containers)<algorithm>
: STL 算法 (STL Algorithms)<functional>
: 函数对象 (Function Objects)<memory>
: 内存管理 (Memory Management), 智能指针 (Smart Pointers), 分配器 (Allocators)<thread>
,<mutex>
,<condition_variable>
,<future>
,<atomic>
: 并发和多线程 (Concurrency and Multithreading)<exception>
,<stdexcept>
: 异常处理 (Exception Handling)<chrono>
: 时间和日期 (Time and Date)<random>
: 随机数生成 (Random Number Generation)<regex>
: 正则表达式 (Regular Expressions)<filesystem>
: 文件系统 (Filesystem - C++17)<optional>
,<variant>
,<any>
: 可选值, 变体, 任意类型 (Optional, Variant, Any - C++17)<format>
: 格式化 (Formatting - C++20)- ...以及其他标准库头文件和组件。
学习路径建议:
- 初级: 一级 C++ 基础 -> 二级 OOP 基础 -> 三级 STL 基础
- 中级: 二级 OOP 深入 -> 三级 STL 深入 -> 四级 现代 C++ 和进阶主题 (C++11/14/17/20 新特性, 并发, 异常处理, 泛型编程)
- 高级/专家: 四级 现代 C++ 和进阶主题 (模板元编程, 系统编程, 网络编程, 性能优化, 测试, 构建系统, 特定领域如 GUI, 游戏, 科学计算) -> 五级 C++ 标准库深入
学习资源建议:
- 书籍:
- 《C++ Primer》 (Stanley B. Lippman, Josée Lajoie, Barbara E. Moo)
- 《Effective C++》, 《More Effective C++》, 《Effective Modern C++》 (Scott Meyers)
- 《Effective STL》 (Scott Meyers)
- 《The C++ Programming Language》 (Bjarne Stroustrup)
- 《Thinking in C++》 (Bruce Eckel) (免费在线版)
- 《C++ Templates: The Complete Guide》 (David Vandevoorde, Nicolai M. Josuttis, Douglas Gregor)
- 《Modern C++ Design: Generic Programming and Design Patterns Applied》 (Andrei Alexandrescu)
- 《Professional C++》 (Marc Gregoire, et al.)
- 在线资源:
- cppreference.com (C++ 标准库文档)
- cplusplus.com (C++ 教程和参考)
- Stack Overflow (问答社区)
- LeetCode, HackerRank 等 (练习平台)
- YouTube 上的 C++ 教程频道
- 实践项目:
- 从简单的小项目开始 (例如命令行工具, 数据结构实现)
- 参与开源项目
- 解决算法竞赛题
总结:
这份 C++ 知识框架旨在提供一个全面而详细的学习蓝图。C++ 是一门庞大而复杂的语言,精通它需要时间和持续的努力。建议从基础开始,逐步深入,并结合实践不断巩固和扩展知识面。希望这个框架能帮助你系统地学习 C++,并最终成为一名优秀的 C++ 开发者!