STL::hashtable

hashtable是stl内一个非公开的类:

其是c++11中新加入的unordered container容器的底部实现。
包括: unordered_set, unordered_multiset, unordered_map, unordered_multimap.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为了防止某个单向链表太长,当元素个数等于buckets vector长度时,buckets vector长度扩展为靠近原长度两倍值的素数(buckets vector初始长度为53),然后将所有元素打散重新计算位置。每次扩展的长度已经计算好:
在这里插入图片描述

hash值的计算:

若key是数字则数字本身就是自己的hash值。
若key是字符串例如 "abcd"则hash值为 ( (‘a’*5+‘b’)*5+‘c’)*5+‘d’ //每个字符对应的ASCII码乘以5加上下一个字符
当key为自定义类型时需要自己写hashfunc计算其hash值

hash在buckets vector中对应的位置:
hash对buckets vector的size取模(余数)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值