-
分享
附录:跨等级 C++ 必背速查表
-
Hydro
SU
@
2026-8-14 0:43:20
本附录是为了“记忆背诵”统一整理。部分条目属于 【辅助补充】,用于防止学生只记零散考点而缺少 C++ 整体知识框架。
A. GESP 高频 C++ 关键字表
A1. 必须高频识别
| 类别 |
关键字 |
用途 |
| 基本类型 |
bool char int long float double void |
类型声明 |
| 类型修饰 |
signed unsigned short const |
类型/只读修饰 |
| 分支 |
if else switch case default |
条件控制 |
| 循环 |
for while do |
循环控制 |
| 跳转 |
break continue return goto |
改变控制流 |
| 结构/类 |
struct class public private protected |
复合类型/OOP |
| 异常 |
try catch throw |
异常处理 |
| 其他 |
sizeof using namespace true false |
常见语法 |
A2. 【辅助补充】常见但 GESP 不一定逐个考查的关键字
auto、static、extern、volatile、enum、typedef、new、delete、this、virtual、friend、operator、template、typename、nullptr。
A3. 高频“不是关键字”的名字
cin、cout、endl、string、vector、queue、stack、map、unordered_map、sort、max、min、sqrt 都不是 C++ 关键字,它们是对象、类型、容器或函数名。
B. 常用转义字符
| 写法 |
含义 |
\n |
换行 |
\t |
制表符 |
\\ |
反斜杠 |
\' |
单引号 |
\" |
双引号 |
\0 |
空字符,数值为 0 |
C. 运算符优先级速查(由高到低,保留 GESP 高频部分)
| 级别 |
运算符 |
说明 |
| 1 |
() [] |
括号、下标 |
| 2 |
! ~ ++ -- 一元 + - * & |
一元运算 |
| 3 |
* / % |
乘除模 |
| 4 |
+ - |
加减 |
| 5 |
<< >> |
位移 |
| 6 |
< <= > >= |
关系 |
| 7 |
== != |
相等性 |
| 8 |
& |
按位与 |
| 9 |
^ |
按位异或 |
| 10 |
| |
按位或 |
| 11 |
&& |
逻辑与 |
| 12 |
|| |
逻辑或 |
| 13 |
?: |
三目 |
| 14 |
= += -= *= /= %= ... |
赋值 |
最稳规则:不确定优先级时主动加括号。
D. 常用头文件
| 头文件 |
常用内容 |
<iostream> |
cin、cout |
<cstdio> |
scanf、printf、freopen |
<cmath> |
sqrt、三角/对数/指数函数 |
<algorithm> |
max、min、sort、reverse |
<string> |
string |
<vector> |
vector |
<queue> |
queue、priority_queue |
<stack> |
stack |
<unordered_map> |
unordered_map |
<unordered_set> |
unordered_set |
<fstream> |
文件流 |
<cctype> |
toupper、tolower、isdigit 等 |
<cstdlib> |
rand、srand、部分 abs |
【辅助补充】竞赛环境常见 #include <bits/stdc++.h> 可以一次包含大量标准库头文件,但它不是 ISO C++ 标准头文件;正式理解仍应知道常用头文件来源。
E. 常用字符判断函数【辅助补充】
| 函数 |
判断/转换 |
isdigit(c) |
是否数字字符 |
isalpha(c) |
是否英文字母 |
islower(c) |
是否小写 |
isupper(c) |
是否大写 |
tolower(c) |
转小写 |
toupper(c) |
转大写 |
F. 常用 STL 容器速查【辅助补充】
| 容器 |
特点 |
高频操作 |
vector |
动态数组 |
push_back、pop_back、size |
string |
字符串 |
size、substr、find |
stack |
后进先出 |
push、pop、top |
queue |
先进先出 |
push、pop、front |
priority_queue |
每次取优先级最高元素 |
push、pop、top |
unordered_set |
哈希集合 |
insert、find、erase |
unordered_map |
哈希键值表 |
[]、find、erase |
G. 常见算法“看到什么想到什么”
| 题目特征 |
第一反应 |
| 有序数组查值/边界 |
二分 |
| 答案越大越容易/越难满足 |
二分答案 |
| 所有可能方案且规模小 |
枚举/DFS |
| 无权最短步数 |
BFS |
| 网格连通块 |
DFS/BFS/Flood Fill |
| 重复子问题 + 最优子结构 |
DP |
| 每一步局部选择可证明最优 |
贪心 |
| 单源非负边最短路 |
Dijkstra |
| 多源全点对最短路且点数较小 |
Floyd |
| 无向连通图最小总连接成本 |
MST(Kruskal/Prim) |
| 多次向上跳祖先 |
倍增 |
| 快速存在性/计数 |
哈希表 |
H. 常见数学公式总表
| 内容 |
公式 |
等差第 n 项 |
an=a1+(n−1)d |
等差前 n 项和 |
Sn=2n(a1+an) |
| 排列 |
Anm=(n−m)!n! |
| 组合 |
Cnm=m!(n−m)!n! |
| 组合递推 |
Cnm=Cn−1m−1+Cn−1m |
| GCD 递推 |
gcd(a,b)=gcd(b,amodb) |
| 三角形面积 |
S=21ah |
| 圆面积 |
S=πr2 |
| 弧度换算 |
rad=deg×180π |
二叉树第 i 层最大节点数 |
2i−1 |
深度 k 二叉树最大节点数 |
2k−1 |
| 叶子与度 2 节点 |
n0=n2+1 |
| Floyd 转移 |
d[i][j]=min(d[i][j],d[i][k]+d[k][j]) |
| LCM |
|
lcm(a,b)=gcd(a,b)∣ab∣
|
I. 复杂度判断经验表【辅助补充】
这是竞赛常用估算经验,不是 GESP 官方固定阈值;实际还受常数、语言、时限影响。
n 大致规模 |
常见可考虑复杂度 |
| n≤20 |
O(2n) / 部分 O(n!) |
| n≤200 |
O(n3) 可能可行 |
| n≤2000 |
O(n2) 常见 |
| n≤105 |
O(nlogn) 常见 |
| n≤106 |
更偏 O(n) / O(nlogn) 低常数 |
J. 读代码题统一检查顺序
- 先写出变量初值。
- 判断数据类型:是否整数除法、溢出、字符 ASCII。
- 明确循环范围:起点、终点、是否包含边界。
- 遇到
break/continue/return 立即标记控制流变化。
- 遇到
++i/i++ 观察它是否参与表达式。
- 遇到位运算先写二进制。
- 遇到递归先找终止条件,再画 2~3 层调用。
- 遇到 DP 先写状态含义,再代入转移。
- 遇到图算法先确认有向/无向、权值正负、点边规模。
K. 全阶段最终背诵目标
学生完成八级后,至少应能不看资料说明以下内容:
- C++ 基本类型、关键字与输入输出。
- 运算符类别和常见优先级。
- ASCII 关键编码与字符转换。
- 原反补码、进制、位运算。
- 数组、字符串、函数、指针/引用、结构体。
- 排序、二分、递归、分治、贪心。
- GCD、筛法、唯一分解、高精度。
- 栈、队列、树、DFS/BFS、简单与复杂 DP。
- 图的存储、Flood Fill、哈希表。
- 计数、排列组合、杨辉三角、倍增。
- MST、Dijkstra、Floyd。
- 主要算法复杂度、空间复杂度与常用优化方向。
L. ASCII 可打印字符完整表(十进制 32~126)
重点仍然是背 32、48、65、97 四个锚点,其余通过连续性推导。
| Dec |
Char |
Dec |
Char |
Dec |
Char |
Dec |
Char |
| 32 |
SPACE |
33 |
! |
34 |
" |
35 |
# |
| 36 |
$ |
37 |
% |
38 |
& |
39 |
' |
| 40 |
( |
41 |
) |
42 |
* |
43 |
+ |
| 44 |
, |
45 |
- |
46 |
. |
47 |
/ |
| 48 |
0 |
49 |
1 |
50 |
2 |
51 |
3 |
| 52 |
4 |
53 |
5 |
54 |
6 |
55 |
7 |
| 56 |
8 |
57 |
9 |
58 |
: |
59 |
; |
| 60 |
< |
61 |
= |
62 |
> |
63 |
? |
| 64 |
@ |
65 |
A |
66 |
B |
67 |
C |
| 68 |
D |
69 |
E |
70 |
F |
71 |
G |
| 72 |
H |
73 |
I |
74 |
J |
75 |
K |
| 76 |
L |
77 |
M |
78 |
N |
79 |
O |
| 80 |
P |
81 |
Q |
82 |
R |
83 |
S |
| 84 |
T |
85 |
U |
86 |
V |
87 |
W |
| 88 |
X |
89 |
Y |
90 |
Z |
91 |
[ |
| 92 |
\\ |
93 |
] |
94 |
^ |
95 |
_ |
| 96 |
` |
97 |
a |
98 |
b |
99 |
c |
| 100 |
d |
101 |
e |
102 |
f |
103 |
g |
| 104 |
h |
105 |
i |
106 |
j |
107 |
k |
| 108 |
l |
109 |
m |
110 |
n |
111 |
o |
| 112 |
p |
113 |
q |
114 |
r |
115 |
s |
| 116 |
t |
117 |
u |
118 |
v |
119 |
w |
| 120 |
x |
121 |
y |
122 |
z |
123 |
{ |
| 124 |
| |
125 |
} |
126 |
~ |
|
ASCII 连续区间
- 数字:
'0'..'9' 对应 48..57。
- 大写字母:
'A'..'Z' 对应 65..90。
- 小写字母:
'a'..'z' 对应 97..122。
- 同一字母大小写 ASCII 差值为 32(ASCII 环境)。