Policy-Based Data Structure(PB_DS) 的基础用法
哈希表 #
用法 #
可以像unordered_map
一样用。
稍微好一点的哈希函数 #
无敌哈希函数 #
平衡树 #
声明 #
头文件 #
用作std::map
#
用作std::set
#
用作std::multiset
#
也可以用std::less_equal
,但lower_bound
和 upper_bound
函数会交换功能并且find
会失效,所以谨慎使用。
比std::set
更强的功能:排名 #
必须在声明里用tree_order_statistics_node_update
以获得与排名相关的功能:
e.g. 求逆序对
使用 lower_bound
和 upper_bound
找前驱和后继 #
前驱:
后继:
优先队列 #
原型 #
用法 #
默认的模板参数就是性能最好的,注意必须要带上__gnu_pbds
命名空间以区分std::priority_queue
。
所有的 5 种 tag:
binary_heap_tag
binomial_heap_tag
pairing_heap_tag
thin_heap_tag
rc_binomial_heap_tag
和 std::priority_queue
的不同之处 #
参考资料 #
Policy-Based Data Structure
Blowing up unordered_map, and how to stop getting hacked on it
pb_ds 库的一些常用方法
用 pbds 过 luogu P3369【模板】普通平衡树