C++ 编程语法完全指南
从零开始,系统学习 C++ 编程语法。不需要任何基础,跟着章节顺序一步步来就行。
开始学习
→
基础语法
01
第一章
⭐ 必学
基础框架
写出人生第一个程序:Hello World · 程序结构 · 编译过程四步骤
点击卡片开始学习 →
→
02
第二章
⭐ 必学
变量与数据类型
数据类型 · 算术运算符 · 类型转换 · 数据编码 —— 点击下方任意小节直达对应页面
⌄
2.1 变量基础
变量 · 命名 · 类型 · 赋值 · 运算
2.2 数据类型转换
隐式 · 强制转换
2.3 ASCII 编码
字符与整数映射
2.4 原码反码补码
负数的二进制表示
2.5 cmath 数学库
abs · pow · sqrt
2.6 作用域与常量
scope · const · #define
03
第三章
⭐ 必学
输入与输出
cin / cout · scanf / printf · 文件读写 —— 点击下方任意小节直达对应页面
⌄
3.1 cin 与 cout
C++ 风格输入输出 · iomanip 格式控制
3.2 scanf 与 printf
C 风格格式化输入输出 · 效率对比
3.3 文件读写
freopen 重定向 · ifstream / ofstream
04
第四章
⭐ 必学
分支结构
运算符 · if / else · 三元运算符 · switch —— 点击下方任意小节直达对应页面
⌄
4.1 运算符
比较运算符 · 逻辑运算符
4.2 if 语句
if · if-else · 多分支
4.3 三元运算符
条件表达式
4.4 switch 语句
多分支选择 · 穿透
05
第五章
⭐ 必学
循环结构
while · do-while · for · break & continue —— 点击下方任意小节直达对应页面
⌄
5.1 while 循环
先判断再执行 · 三种循环一览
5.2 do-while 循环
先执行再判断 · 至少一次
5.3 for 循环
三段式结构 · 嵌套循环
5.4 break 与 continue
跳出循环 · 跳过本次
06
第六章
⭐ 必学
数组
管理大量数据:用数组存储成绩、矩阵和单词 —— 点击下方任意小节直达对应页面
⌄
6.1 一维数组
定义 · 访问 · 插入删除 · 排序
6.2 二维数组
矩阵 · 求和与转置
6.3 字符数组
C 风格字符串 · 常用函数
07
第七章
🚀 竞赛加分项
位运算
让程序飞起来:了解计算机底层的快速运算技巧
点击卡片开始学习 →
→
08
第八章
⭐ 必学
函数
定义与调用 · 参数详解 · 默认参数 · 函数重载 · 内联函数 · Lambda 表达式 —— 点击下方任意小节直达对应页面
⌄
8.1 函数基础
定义 · 调用 · 声明
8.2 函数参数详解
值 / 引用 / 指针传递 · 默认参数
8.3 函数重载与内联函数
重载匹配 · inline
8.4 Lambda 表达式
匿名函数 · 捕获列表
09
第九章
🚀 进阶挑战
指针与引用
指针基础 · 引用传参 · 动态内存
点击卡片开始学习 →
→
10
第十章
⭐ 必学
结构体
struct 定义 · 嵌套结构 · 自定义排序
点击卡片开始学习 →
→
进阶语法
11
第十一章
STL 标准模板库
序列容器 · 容器适配器 · 关联容器 · 实用类型 · STL 算法 —— 点击下方任意专题卡片直达对应页面
⌄
🧰
STL 是什么?通用操作有哪些?
先导课 · 三大组件(容器 / 算法 / 迭代器) · 所有容器共享的通用接口
→
序列容器
按顺序存放元素
string
字符串
vector
动态数组
list
双向链表
deque
双端队列
容器适配器
限制访问方式的"包装"容器
stack
栈 · 后进先出
queue
队列 · 先进先出
priority_queue
优先队列
关联容器
按键查找,自动排序或哈希
map
有序映射
unordered_map
无序映射
set
有序集合
实用类型
打包数据的小工具
pair
打包两个值
bitset
位集合
STL 算法
排序、查找、统计等通用工具
排序与排列
sort · stable_sort · next_permutation
查找与计数
find · binary_search · lower_bound
复制替换移动
copy · fill · replace · unique
数值运算
accumulate · partial_sum · iota
集合运算
set_union · set_intersection
条件判断遍历
all_of · any_of · for_each
12
第十二章
类与面向对象
class · 封装与访问控制 · 构造析构 · 运算符重载 · 继承 · 多态 —— 点击下方任意专题卡片直达对应页面
⌄
📦
面向对象是什么?本章学什么?
先导课 · 封装 / 继承 / 多态三大特性 · 关键字速查 · 学习路径
→
基础语法
从 struct 到 class
面向对象的起点
类的定义与对象
成员变量 · 成员函数 · this
封装与访问控制
public · private · protected
构造与析构函数
初始化列表 · 对象生命周期
运算符重载
operator · 配合 sort 排序
进阶特性
拷贝构造函数
深拷贝 vs 浅拷贝
静态成员 static
所有对象共享同一份
继承基础
基类 · 派生类 · protected
虚函数与多态
virtual · 动态绑定 · vtable
抽象类与纯虚函数
= 0 · 接口设计
算法进阶
A
算法进阶
算法专题文档
从数学基础到动态规划、图论进阶 · 点击下方任意专题卡片直达对应页面
⌄
🧭
什么是算法?怎么判断算法好坏?
先导课 · 时间复杂度 · 空间复杂度 · O(n) 记号 · 竞赛估算方法
→
01
数学基础
判断质数、算最大公约数——数论类题目的地基工具
数位拆分
取出每一位数字
回文判断
正读反读是否相同
质数判断
判断是否为素数
最大公约数
欧几里得算法
最小公倍数
借助最大公约数
进制转换
不同进位制互转
快速幂
对数时间算幂
线性筛素数
批量筛出素数
高精度加法
数组模拟竖式加法
高精度减法
借位与大小比较
高精度乘法
按位置累加乘积
高精度除法
从最高位模拟除法
02
基础算法思想
想不出巧办法时,先用"笨办法"把所有可能试一遍
枚举法
逐一尝试所有可能
数组标记法
用数组记录状态
模拟法
照题意一步步执行
03
简单排序
从头搞懂"排序"到底是怎么排起来的
冒泡排序
相邻交换冒泡
选择排序
每轮选出最小值
插入排序
像理牌一样插入
桶排序
用空间换时间
04
贪心算法
学会"见好就收"的决策智慧:解决找零、活动安排等实际问题
贪心算法
区间调度 · 部分背包
05
区间处理技巧
反复问"这段区间加起来是多少",不用每次重新累加
前缀和
O(1) 查询区间和
差分
区间修改的逆运算
二维前缀和
矩形区域求和
06
单调栈与单调队列
排队淘汰赛:随时踢出"没用"的旧数据,只留下真正有潜力的
单调栈
找最近更大/更小值
单调队列
滑动窗口最值
07
双指针与二分查找
在一堆数据里又快又准地找到目标
双指针
两个下标协同移动
二分查找
有序数组对数查找
08
递推与递归
斐波那契数列、汉诺塔——用"小问题"解决"大问题"
递推
用前一步推出下一步
递归
函数调用自身
09
分治排序
人多的活儿分给几拨人各自干,再把结果拼起来——又快又聪明
快速排序
分治 + partition
归并排序
分治 + 合并
10
并查集
轻松管理朋友圈、连通网络等分组问题
并查集
Union-Find · 路径压缩
11
树与二叉树
家谱、文件夹、组织架构——生活中处处都是"树"
树的基本概念
节点、父子、深度与高度
二叉树的存储
数组式 · 链式
二叉树的遍历
前中后序 · 层序
二叉搜索树
左小右大,近似二分查找
12
搜索基础
走迷宫、排列组合——把所有可能都试一遍
DFS 深度优先搜索
一条路走到底
回溯
试错后撤销选择
剪枝优化
提前排除无效分支
记忆化搜索
缓存已算过的结果
13
动态规划基础
学会"记笔记"式的优化计算方法,算过的不再算第二遍
线性 DP
LIS · LCS
背包问题
01 · 完全 · 多重
14
搜索进阶
更聪明地走迷宫:不多走一步冤枉路
BFS 广度优先搜索
一层一层扩展
双向 BFS
两端同时搜索
迭代加深搜索 IDDFS
限定深度逐步加深
A* 算法
启发式搜索
IDA* 算法
IDDFS + A* 结合
15
图论基础
地图导航、社交网络——研究"点"与"点"之间怎么连
图的存储
邻接矩阵 · 邻接表
Floyd 最短路
三重循环求最短路
Dijkstra 最短路
贪心 + 优先队列
Kruskal 最小生成树
按边权排序贪心
Prim 最小生成树
从点扩展贪心
拓扑排序
有向无环图排序
16
树状数组与线段树
面对海量数据,既要能"秒查"又要能"秒改",专门为此而生
离散化
压缩数值范围
树状数组
高效维护前缀和
线段树
区间查询与修改
17
字符串算法
在长文本里快速找到你要的那一句话
字符串哈希
字符串转数字比较
KMP 字符串匹配
高效模式匹配
Trie 字典树
高效处理字符串前缀
18
动态规划进阶
更复杂场景下的"记笔记"技巧:区间、状态压缩、树上
区间 DP
在区间上转移
状压 DP
二进制表示状态
树形 DP
在树上转移
数位 DP
按数位统计
19
拓展专题
竞赛冲刺加分项:树上的最近公共祖先、猜先手必胜的博弈游戏
LCA 最近公共祖先
树上倍增
博弈论
Nim 游戏 · SG 函数
数论进阶
扩展欧几里得 · 逆元
附录
🚧 筹备中
🔧
附录
即将推出
常见错误与解决方法
编译错误 · 运行时错误 · 调试技巧 · 常见坑汇总