本文主要是介绍map与unordered_map区别太大了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
map
map是STL的一个关联容器,它提供一对一(第一个为key,每个key只能在map中出现一次,第二个为value)的数据处理能力。map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),所以在map内部所有的数据都是有序的,且map的查询、插入、删除操作的时间复杂度都是O(logN)。在使用时,map的key需要定义operator<。
unordered_map
unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value。不同的是unordered_map不会根据key的大小进行排序,存储时是根据key的hash值判断元素是否相同,即unordered_map内部元素是无序的。unordered_map的key需要定义hash_value函数并且重载operator==。
unordered_map的底层是一个防冗余的哈希表(采用除留余数法)。哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,时间复杂度为O(1);而代价仅仅是消耗比较多的内存。
关于这两者在程序运行时间的影响,看这题Leetcode 187. Repeated DNA Sequences使用map就知道,差距太大了
注意:map的支持的类型可能更多一些,看这个例子,1072. 按列翻转得到最大值等行数
链接:https://blog.csdn.net/u011475134/article/details/75810085
这篇关于map与unordered_map区别太大了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!