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快一点。
时间: 2024-10-25 00:13:21