当前位置: 首页 > 面试题库 >

请你来说一说hash表的实现,包括STL中的哈希桶长度常数

祁凯泽
2023-03-14
本文向大家介绍请你来说一说hash表的实现,包括STL中的哈希桶长度常数相关面试题,主要包含被问及请你来说一说hash表的实现,包括STL中的哈希桶长度常数时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

hash表的实现主要包括构造哈希和处理哈希冲突两个方面:

对于构造哈希来说,主要包括直接地址法、平方取中法、除留余数

法等。

对于处理哈希冲突来说,最常用的处理冲突的方法有开放定址法、再哈希法、链地址法、建立公共溢出区等方法。SGL版本使用链地址法,使用一个链表保持相同散列值的元素

虽然链地址法并不要求哈希桶长度必须为质数,但SGI STL仍然以质数来设计哈希桶长度,并且将28个质数(逐渐呈现大约两倍的关系)计算好,以备随时访问,同时提供一个函数,用来查询在这28个质数之中,“最接近某数并大于某数”的质数。

 类似资料:
  • 本文向大家介绍请你说一下哈希表是做什么的?另外哈希表的实现原理也说一下相关面试题,主要包含被问及请你说一下哈希表是做什么的?另外哈希表的实现原理也说一下时的应答技巧和注意事项,需要的朋友参考一下 参考回答: Hash表即散列表,其最突出的优点是查找和插入删除具有常数时间的复杂度 其实现原理是:把Key通过一个固定的算法函数即所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结

  • 本文向大家介绍请你说一说哈希冲突的解决方法?相关面试题,主要包含被问及请你说一说哈希冲突的解决方法?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 考察点:hash冲突,数据结构 公司:腾讯 1、开放定址 开放地址法有个非常关键的特征,就是所有输入的元素全部存放在哈希表里,也就是说,位桶的实现是不需要任何的链表来实现的,换句话说,也就是这个哈希表的装载因子不会超过1。它的实现是在插入一个元

  • 本文向大家介绍请你说一说stl里面set和map怎么实现的?相关面试题,主要包含被问及请你说一说stl里面set和map怎么实现的?时的应答技巧和注意事项,需要的朋友参考一下 集合,所有元素都会根据元素的值自动被排序,且不允许重复。 底层实现:红黑树 set 底层是通过红黑树(RB-tree)来实现的,由于红黑树是一种平衡二叉搜索树,自动排序的效果很不错,所以标准的 STL 的 set 即以 RB

  • 本文向大家介绍请你说说STL中map与unordered_map?相关面试题,主要包含被问及请你说说STL中map与unordered_map?时的应答技巧和注意事项,需要的朋友参考一下 1、Map映射,map 的所有元素都是 pair,同时拥有实值(value)和键值(key)。pair 的第一元素被视为键值,第二元素被视为实值。所有元素都会根据元素的键值自动被排序。不允许键值重复。 底层实现:

  • 本文向大家介绍请你说一说C++ STL 的内存优化?相关面试题,主要包含被问及请你说一说C++ STL 的内存优化?时的应答技巧和注意事项,需要的朋友参考一下 1)二级配置器结构 STL内存管理使用二级内存配置器。 1、第一级配置器 第一级配置器以malloc(),free(),realloc()等C函数执行实际的内存配置、释放、重新配置等操作,并且能在内存需求不被满足的时候,调用一个指定的函数。

  • 本文向大家介绍请你来说一说STL迭代器删除元素?相关面试题,主要包含被问及请你来说一说STL迭代器删除元素?时的应答技巧和注意事项,需要的朋友参考一下 这个主要考察的是迭代器失效的问题。1.对于序列容器vector,deque来说,使用erase(itertor)后,后边的每个元素的迭代器都会失效,但是后边每个元素都会往前移动一个位置,但是erase会返回下一个有效的迭代器;2.对于关联容器map