既然 std
在 unordered_map
中有一个真正的 HashMap ,为什么(或何时)我仍想使用旧的 map
在实际存在的系统上通过 unordered_map
?是否有任何我无法立即看到的明显情况?
最佳答案
作为 already mentioned , map
允许以排序的方式遍历元素,但 unordered_map
不允许。这在许多情况下都非常重要,例如显示集合(例如地址簿)。这也体现在其他间接方式中,例如:(1) 从 find()
返回的迭代器开始迭代,或 (2) 存在像 lower_bound()
这样的成员函数。
另外,我认为最坏情况 搜索的复杂性有所不同。
对于
map
,为O(lg N)对于
unordered_map
,是O(N)[这个可能发生在hash函数不好导致太多hash冲突的时候。] p>
这同样适用于最坏情况 删除复杂性。
关于c++ - 在 std::map 和 std::unordered_map 之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3902644/