c++ map和unordered_map比较

http://thispointer.com/map-vs-unordered_map-when-to-choose-one-over-another/

在这篇文章中我们将对std::map与std::unordered_map进行比较,并解释什么时候该选用哪一种。

两种结构都以键值对的形式存储元素,并且提供成员函数来协助高效地插入,查询和删除键值对。

但是他们在以下的几个方面有区别:

  • 内部实现

  • 内存使用

  • 时间复杂度

内部实现

std::map将元素存储在一个平衡二叉树中,所以元素是有序存储的。

std::unordered_map使用哈希表来存储元素,元素并不是有序存储。

内存使用

unordered_map比ordered_map更占用内存,因为需要额外的内存来存储哈希表。

查找时间复杂度

std::map的查找时间复杂度是O(log n)。

std::unordered_map最佳的查找时间复杂度是O(1),如果哈希函数不是很好的话,最糟糕的复杂度会是O(n)。

什么时候选择map:

  1. 当你需要低内存占用率

  2. 当你希望序列是有序的

  3. 当你需要稳定的表现

什么时候选择unordered_map

当你有一个很好的哈希函数和对内存占用率没有限制时

猜你喜欢

转载自blog.csdn.net/weixin_30104533/article/details/80557135