c – 在std :: map和std :: unordered_map之间进行选择

现在std在unordered_map中有一个真正的哈希映射,为什么(或什么时候)我仍然想要使用好的旧映射over unordered_map在系统上实际存在?有没有明显的情况,我不能立即看到?
作为already mentioned,map允许以排序的方式遍历元素,但是unordered_map没有。这在许多情况下是非常重要的,例如显示集合(例如地址簿)。这也表现为其他间接的方式,如:(1)从由find()返回的迭代器开始迭代,或(2)存在成员函数,如lower_bound()。

此外,我认为在最坏的情况下搜索复杂性有一些差异。

>对于地图,它是O(lg N)
>对于unordered_map,它是O(N)[这可能发生在散列函数不好导致太多散列冲突时。]

这同样适用于最坏情况删除复杂度。

http://stackoverflow.com/questions/3902644/choosing-between-stdmap-and-stdunordered-map

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – 在std :: map和std :: unordered_map之间进行选择