首页 > 后端开发 > C++ > 为什么 `std::unordered_map` 使用开放散列?

为什么 `std::unordered_map` 使用开放散列?

Barbara Streisand
发布: 2024-12-05 06:08:11
原创
824 人浏览过

Why Does `std::unordered_map` Use Open Hashing?

std::unordered_map 的实现

通过对 C 标准的分析,很明显 std::unordered_map 的实现必须使用一种称为开放散列的方法,也称为单独链接。该方法由一系列存储桶组成,每个存储桶持有一个链表的头部,这可以实现高效迭代,而无需绕过空存储桶。

开放散列的选择是有意为满足 C 中概述的特定性能要求标准。首先,默认的最大负载因子设置为 1.0,这意味着只要大小超过存储桶计数 1.0,表就会调整大小。其次,保证表不会被重新散列,除非它的增长超出了该负载因子。这些要求使得开放散列成为必要,因为当负载因子由于过度冲突而接近 1 时,封闭散列变得不切实际。

虽然有些人认为开放散列并不是适用于所有用例的最有效方法,但它仍然是一个合理的选择由于其可靠的冲突处理、对不同大小的键/值类型的适应性以及在没有性能的情况下处理大量插入和删除的整体效率,因此适合一般用途

因此,std::unordered_map 利用开放散列来满足指定的性能要求,并且由于其多功能性和效率,对于大多数应用程序来说仍然是一个可靠的选择。

以上是为什么 `std::unordered_map` 使用开放散列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板