为什么会出现unordered_map这个东西?

大多数同学对于顺序容器很熟悉,但是对于关联容器还是有些陌生,所以对map的掌握往往不够,更别说unordered_map这个c++11之后才写进标准库的新东西了。

那么为什么会出现unordered_map这个东西呢?它解决了什么痛点?在解决这些痛点的同时,它又带来了什么问题呢?下面详细分析。

1,解决了什么痛点?

答:传统的map,内部实现的数据结构是红黑树,由于红黑树的每个节点都要存储其父节点、子节点、以及其自身的红黑性质,造成传统map占用内容较多,空间利用率不高。而unordered_map内部实现的数据结构是哈希表,从而解决了这个问题。

2,带来了什么新问题?

答:由于unordered_map内部数据结构是哈希表,所有在创建unordered_map对象的时候需要计算每一个元素的哈希值,非常耗时。

3,最合适的使用场景

对于map,适合数据有序的场景,因为map在创建时其中的元素天然有序,默认按照key排序;

对于unordered_map,适合大量数据的查找问题,因为其时间复杂度是常数级的。

4,备注

unordered_map中的元素也不是按照其输入顺序排列的,是按照元素的哈希值排列的。

参考文章 点击打开

猜你喜欢

转载自blog.csdn.net/jigetage/article/details/84772614