浅析C++gnu pbds库
pbds
俗称平板电视,__gnu_pbds
自带了封装好了的平衡树、字典树、hash
数据结构,速度快过\(STL\)
\(Ⅰ\).引入
想要使用\(pbds\),必须先要添加头文件,\(pbds\)并不属于bits/stdc++.h
的一部分,所以也只能在\(g++\ Mingw64\)的环境下食用。
以下是头文件:
#include <bits/extc++.h>
以下是命名空间:
using namespace __gnu_cxx;
using namespace __gnu_pbds;
不得不说确实有点难背
\(Ⅱ\).使用
1.哈希表
个人认为这是最好用的。
常数很小,支持所有类型,不像unordered_map
(bushi
对比unordered_map
:
+O2
的情况下速度快了\(30ms~80ms\)左右- 不加
O2
的情况下速度快了\(100ms~120ms\)左右 - 空间复杂度略大
- 功能相当完备
- 比
unordered_map
更难\(hack\)
在\(pbds\)中,有两种\(hash\),分别是
\(cc\_hash\_table\) 和
\(gp\_hash\_table\)