Mar*_*ind 2 c++ hash unordered-map c++11
我知道在构建一个无序的地图时M,我会准确插入k元素.我应该如何选择铲斗的数量M?
我正在考虑n = 10*k在尺寸和碰撞机会之间进行合理的权衡.
使用k == n并不是一个糟糕的选择.max_load_factor无序容器的默认值为1.0.这意味着容器将不再重新分配更多桶k > n.如果你想要另一个max_load_factor,那么构建你的容器,设置max_load_factor,然后调用reserve(k),这将为k你的当前元素分配足够的桶max_load_factor.
选择好的max_load_factor取决于所使用的散列数据结构的类型. 以下是两种主要类型的良好描述:链接和开放寻址.此描述包含一个很好的图表,显示了这两个基本哈希数据结构设计的平均冲突数与负载因子.
std :: unordered容器被约束为使用链接设计,因此您可以了解负载因子为1时可能出现的冲突.
该委员会的动机是让其容器能够在大多数情况下开箱即用,无需进行大量调整.该委员会认为默认max_load_factor值为1将是内存使用和因冲突导致的性能下降之间的妥协.
如果您不确定,请将容器设为默认值.如果您感到好奇,请更改默认值并测量(速度和内存使用情况).
| 归档时间: |
|
| 查看次数: |
1907 次 |
| 最近记录: |