32 位有符号整数,范围 -2³¹ ~ 2³¹-1(约 ±2.1×10⁹)
64 位有符号整数,范围 -2⁶³ ~ 2⁶³-1(约 ±9.2×10¹⁸)
float 单精度(6-7 位有效数字)
double 双精度(15-16 位有效数字)
存储一个 ASCII 字符,占用 1 字节,也可当作小整数(-128~127)
常用 ASCII:'0'=48 'A'=65 'a'=97
取值 true(1)或 false(0)
任何非零值在条件判断中都视为 true
C++ 标准字符串类
让编译器自动推导变量类型
注意:引用或要修改时用 auto&
使用 using namespace std;
比 cin/cout 快
注意:scanf 的变量前要加 &
读取包含空格的整行文本
比赛常用文件输入输出
常用条件:a > b x != y a >= b && a <= c !flag
用于对一个整型/字符型变量的多个取值做分支
简洁的条件表达式
可以省略某些部分:for(;;) 是死循环
简洁遍历容器或数组
可动态增长的数组,最常用的容器!
编译期固定大小的数组
⚠️ 大小必须在编译期确定
后进先出 (LIFO)
应用:括号匹配、DFS、表达式求值
先进先出 (FIFO)
应用:BFS、层序遍历
两端都能快速插入/删除
应用:滑动窗口、单调队列
默认最大堆(最大的在顶部)
应用:Dijkstra、Huffman、TopK
有序集合,自动从小到大排序
底层红黑树,操作 O(log n)
按键值对存储和访问
map 有序 O(log n),unordered_map 无序 O(1)
组合多个值
C++17 结构化绑定:auto [x, y] = p;
O(n log n) 快排
要求容器已排序
去重标准三步曲
⚠️ 初始序列必须升序
注意:pow 返回 double,整数次幂可能有精度问题
C++11/14 竞赛可用(C++17 起用 std::gcd)
#include <bits/stdc++.h> + using namespace std; 后以下名字容易冲突:
⚠️ 加了后不要混用 scanf/printf 和 cin/cout