|
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: 当你需要低内存占用率 当你希望序列是有序的 当你需要稳定的表现
什么时候选择unordered_map 当你有一个很好的哈希函数和对内存占用率没有限制时 |