【发布时间】:2016-12-16 10:46:20
【问题描述】:
我正在创建一个std::unordered_map,我将立即使用 n 个键值对填充它 - 我知道 n。之后将不再添加任何元素 - 我只会执行查找。
因此,我应该将什么作为 bucket_count 传递给构造函数?
注意事项:
- 我知道这不是非常关键,我根本无法指定任何内容,但它会起作用。
- 这与What should I pass to unordered_map's bucket count argument if I just want to specify a hash function?) 相关,但不是其欺骗)
- 如果对您的回答有帮助,您可能会假设我希望在 f_1 和 f_2 之间设置一个负载因子(提前知道)。
- 我使用的是默认散列函数,不知道输入是什么样的,但不太可能与散列对抗..
【问题讨论】:
-
这在很大程度上取决于您之后将如何处理此地图。你会添加其他元素,还是只是阅读它?您追求速度还是空间效率?您的哈希函数在您的集合上产生了多少冲突?考虑负载因子而不是实际的桶数是合理的。
-
@Jean-BernardJansen:见编辑。另外,我想要某种合理的默认值——就像我们现在在不知道 n 的情况下有一个合理的默认值一样。添加该信息并应用相同的考虑因素,应该会产生一些数字...
标签: c++ unordered-map c++-standard-library buckets