【博客7】测试STL的hash_set

内容: 今天在看STL源码剖中的hashtable这一节时,书中讲述hashtable的hash散列函数对大多数int,char,short类型什么都不做,直接返回,对字符串的书中有一个对字符串每个字符的ASCII值乘5叠加的公式计算哈希值,然后对float,double,string等特殊的没有进行处理,并给出了若没有自己定义对它们的散列函数,那么插入会出错的例子,由于hash_set是以hashtable为基础实现的,所以hashtable没有办法处理的类型,hash_set也没有办法处理。我自己测试了一下,发现跟书中讲的不一样,现在的编译器已经加入了很多类型的哈希散列函数。

vs2012下查找hash_set的散列函数:

在这里插入图片描述
在这里插入图片描述
在STL源码剖析中展示的hash函数列表中并没有float和double类型,不过在vs下我去翻了下,翻到了float和double的hash函数。
在这里插入图片描述
感受:STL源码剖析中的例子有部分在现在的编译器上进行测试是跟书的不一样,应该是作书当时还比较早,很多东西还没有完善,不过现在的编译器比当时已经进步很多了,STL标准也加入了很多东西,书里介绍的哈希容器是hash_set,hash_map,不过我看的c++书,很多介绍的是unordered_map和unordered_set。在leetcode上刷题也用的新的哈希容器了,不过STL中的介绍对于理解新的哈希容器应该会有很大的帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值