std::unordered_map 的实现
通过对 C 标准的分析,很明显 std::unordered_map 的实现必须使用一种称为开放散列的方法,也称为单独链接。该方法由一系列存储桶组成,每个存储桶持有一个链表的头部,这可以实现高效迭代,而无需绕过空存储桶。
开放散列的选择是有意为满足 C 中概述的特定性能要求标准。首先,默认的最大负载因子设置为 1.0,这意味着只要大小超过存储桶计数 1.0,表就会调整大小。其次,保证表不会被重新散列,除非它的增长超出了该负载因子。这些要求使得开放散列成为必要,因为当负载因子由于过度冲突而接近 1 时,封闭散列变得不切实际。
虽然有些人认为开放散列并不是适用于所有用例的最有效方法,但它仍然是一个合理的选择由于其可靠的冲突处理、对不同大小的键/值类型的适应性以及在没有性能的情况下处理大量插入和删除的整体效率,因此适合一般用途
因此,std::unordered_map 利用开放散列来满足指定的性能要求,并且由于其多功能性和效率,对于大多数应用程序来说仍然是一个可靠的选择。
以上是为什么 `std::unordered_map` 使用开放散列?的详细内容。更多信息请关注PHP中文网其他相关文章!