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

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

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取模(余数)。

相关文章:

  • 2021-10-25
  • 2021-07-22
  • 2022-12-23
  • 2021-10-04
  • 2021-12-10
  • 2021-09-26
  • 2021-09-02
猜你喜欢
  • 2021-06-17
  • 2021-10-06
  • 2021-11-06
  • 2022-02-25
  • 2022-12-23
  • 2021-11-29
相关资源
相似解决方案