1. 程式人生 > >C++ pb_ds庫之hash

C++ pb_ds庫之hash

lan 有一個 spa 代碼簡潔 nbsp com bsp map 數據

pb_ds庫之hash

最近在做hash的模板題,自己手打的的hash代碼長還容易出錯。

但STL中有一個pb_ds庫,裏面的hash函數和手打的hash速度差不多,比STL中的map快多了。

與大家分享一下,不足之處還請各位神犇指出和補充。

本文只是簡略地介紹此函數在hash中的應用,若想深入研究,這裏有一個:C++的pb-ds庫在OI中的應用

網址:https://wenku.baidu.com/view/ffc18b542f60ddccdb38a00d.html?pn=NaN

pb_ds庫hash函數需要調用的的頭文件:

#include<ext/pb_ds/assoc_container.hpp>
#include
<ext/pb_ds/hash_policy.hpp> using namespace __gnu_pbds;

函數聲明方式:

cc_hash_table<int,bool>h;
gp_hash_table<int,bool>h;

其中所定義的兩種數據類型不局限於<int,bool>,<string,bool>,<string,int>都可以。

cc_hash_table是拉鏈法

gp_hash_table是查探法

查探法要快一些,個人推薦用查探法。

補充:

pb_ds庫中的兩種hash函數比map的效率大大提高,比起手打hash代碼簡潔且易於調試。

個人覺得如果追求速度的話個人覺得還是手打hash快一點。

C++ pb_ds庫之hash