C++ pb_ds库之hash

2018-06-17 22:15:43来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

 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快一点。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:P1993 小 K 的农场

下一篇:include包含头文件的语句中,双引号和尖括号的区别