c++ - 插入在 Unordered_map (C++) 中花费很长时间,以 ULONG 为键且桶数未知

标签 c++ unordered-map

我有一个 unordered_map,键为 ULONG。

我知道可以有大量的条目,但不确定有多少。所以不能事先指定桶数。我期望插入的时间复杂度为 O(1),因为键是唯一的。但似乎插入需要很长时间。

我读过,如果有很多重新散列,这可能是可能的,因为桶计数未指定,这需要不确定的时间。

我能做些什么来提高这里插入的时间复杂度。或者我错过了什么?

最佳答案

一些可能有帮助的事情:

  1. 您实际上可以计算何时进行重新散列,并找出问题所在。来自 cplusplus.com :

“如果插入操作后新容器的大小增加到超过其容量阈值(计算为容器的 bucket_count 乘以其 max_load_factor),则强制重新散列。”

  1. 尝试隔离插入操作并查看它是否确实像看起来那样花费时间,否则编写一个简单的计时器并将其放置在代码中有用的位置以查看时间被吃掉的地方

关于c++ - 插入在 Unordered_map (C++) 中花费很长时间,以 ULONG 为键且桶数未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34214860/

相关文章:

c++ - 如何对 string::getline 进行长度限制

c++ - 如何通过引用相同的模板函数来传递一行 boost::multi_array 和 std::vector?

c++ - 容器对象标识的相等而不是元素明智

c++ - 如何(有效地)插入以 map 为值的 map ?

c++ - 使用委托(delegate)构造函数重新初始化

c++ - 尽管系统设置已关闭,QFileDialog 仍显示隐藏文件

c++ - 错误 LNK2019 : unresolved external symbol for class unordered_map

c++ - 在不使用 if 的情况下插入/更新 std::unordered_map 元素的最快方法是什么?

c++ - 遍历 C++ unordered_map 的时间复杂度

c++ - 在 C++ 中实现 Hashmap::模板化数据类型的散列函数