其他分享
首页 > 其他分享> > c – 在std :: map和std :: unordered_map 之间选择

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

作者:互联网

参见英文答案 > Is there any advantage of using map over unordered_map in case of trivial keys?                                    12个
既然std在unordered_map中有一个真正的哈希映射,为什么(或者什么时候)我还想在实际存在的系统上使用unordered_map上的旧映射?是否有任何我无法立即看到的明显情况?

解决方法:

作为already mentioned,map允许以排序方式迭代元素,但unordered_map不允许.这在许多情况下非常重要,例如显示集合(例如地址簿).这也体现在其他间接方式中:(1)从find()返回的迭代器开始迭代,或者(2)存在成员函数,如lower_bound().

此外,我认为在最坏情况搜索复杂性方面存在一些差异.

>对于地图,它是O(lg N)
>对于unordered_map,它是O(N)[当哈希函数不好导致太多哈希冲突时,可能会发生这种情况.

这同样适用于最坏情况删除复杂性.

标签:unordered-map,c,c11,hash,map
来源: https://codeday.me/bug/20190917/1809679.html