滑蒻稽的博客

【其他】实用的 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 位置的元素,返回下一个有值的地方的迭代器。
posted @ 2022-03-25 16:01  huaruoji  阅读(66)  评论(0编辑  收藏  举报