[學習筆記]pb_ds庫


前言

其實我很早開始就用pb_ds庫了,用起來確實方便.但最近感覺還是對這個了解頗少,還是來補一下

話說有人會忘記頭文件,其實這有個伎倆,找到電腦上的g++文件夾.Ubuntu應該在etc中,Windows的話各省應該都預裝了Dev-CPP吧,右鍵打開文件位置

進入Dev-Cpp\MinGW32\lib\gcc\mingw32\4.8.1\include\c++

然后就發現一大堆頭文件還有個叫pb_ds的文件夾,點進去又有大堆頭文件,你按照相似方式ext/pb_ds/...加入你的代碼就好了

當然也有個萬能的#include<bits/extc++.h>不過有些可能不資瓷

哈希表

哈希表再也不用map/unordered_map實現了

調用

#include <ext/pb_ds/hash_policy.hpp>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
gp_hash_table <int,int>g;
cc_hash_table <int,int>c;

支持[]重載運算符,非常方便

gp_hash_table使用查探法,cc_hash_table使用拉鏈法

我一直是用gp_hash_table而且確實一般會稍快一點,然而昨天我做到了一道題毒瘤出題人8e5個數基本上是連續的

gp_hash_table就真的GG了,10s還沒跑出來,cc_hash_table一下就跑完了

看了這篇文章才知道原因:https://blog.csdn.net/u011080472/article/details/51177412

所以我個人建議使用cc_hash_table

優先隊列

這里只講最常見的配對堆的使用,對其他種類的堆感興趣的請自行了解

調用

#include <ext/pb_ds/priority_queue.hpp>
using namespace _gnu_pbds;
typedef pair<int,int> pii
typedef priority_queue < pii ,std::less<pii> ,pairing_heap_tag> Heap

這樣Heap poi就讓poi稱為一個配對堆了

非常快


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM