你是否 STL 不会用一点?
1 pair
2 array
3 vector
4 string
5 堆/优先队列
以下数据结构具有完全的相同复杂度。
- priority_queue 支持 插入一个数、删除最值,查询全局第 k 大、最值。
- Heap 支持原数组单点修改、插入一个数、删除最值,查询全局第 k 大、最值。可以代替 priority_queue 。
- multiset 或 set 可以代替 Heap 。
- Fenwick Tree 可以代替 Heap 。不能代替 multiset 或 set。
于是 priority_queue 仅仅只是 cache 友好。
考虑应用场景,priority_queue 能且只能维护静态集合最值。
6 set
6.1 set 维护下标
Codeforces Round 849 (Div. 4)
6.2 维护动态集合的第 K 大,支持集合单点增/删
luogu 对顶堆
6.3
AT_abc341_e
7 multiset
7.1 维护有序数组、它的差分数组。单点增/删,最值查询。
9 queue
10 dequeue
11 stack
12 map
13 封装哈希表 HashMap
14 bitset
——永远是挑战而不是练习,下次一定更好。