【其他】实用的 C++
不实用的 STL 和 pb_ds 库
本文抄袭:https://oi-wiki.org/lang/pb-ds/
pb_ds
哈希表
gp_hash_table<Key, Value>
平衡树
tree<T, Mapped, Cmp_Fn>
Mapped
是映射类型,如果不需要(实现和 set
)一样的效果,填入 null_type
。
成员函数:
insert(x)
:向树中插入一个元素 x,返回std::pair<point_iterator, bool>
。erase(x)
:从树中删除一个元素/迭代器 x,返回一个bool
表明是否删除成功。order_of_key(x)
:返回 x 以Cmp_Fn
比较的排名。find_by_order(x)
:返回Cmp_Fn
比较的排名所对应元素的迭代器。lower_bound(x)
:以Cmp_Fn
比较做lower_bound
,返回迭代器。upper_bound(x)
:以Cmp_Fn
比较做upper_bound
,返回迭代器。empty()
:返回是否为空。size()
:返回大小。
优先队列
priority_queue<T, Comp>
vector
成员函数:
emplace(p, x)
,在迭代器 p 前面插入元素 x(或者 initializer list)。erase(p)
删掉迭代器 p 位置的元素,返回下一个有值的地方的迭代器。注意删掉之后 vector 其他地方的迭代器不像 map、list 的不会变。
bitset
成员函数:
__Find_first()
返回第一个为 1 的位置__Find_next(x)
返回位置 x 后面第一个为 1 的位置。和__Find_first()
配合遍历 bitset 有值的地方的复杂度是 \(O(\frac n{\omega}+\text{有值地方的个数})\)
list
成员函数:
emplace(p, x)
,在迭代器 p 前面插入元素 x(或者 initializer list)。erase(p)
删掉迭代器 p 位置的元素,返回下一个有值的地方的迭代器。