C++ STL之unordered_map

hash_map未加入C++11标准

C++11标准加入unordered系列的容器unordered_map

 

map vs unordered_map: map底层实现为红黑树,时间复杂度为O(logn),unordered_map底层实现为哈希表,时间复杂度为O(1),均不能有重复的key,可使用[]运算符

 

  • 但是在数据量小的时候,unorder_map比map慢
原因在于unordered_map的初始化比较耗时,我们都知道map是红黑树,unordered_map是哈希表,造成性能差异的原因在于,红黑树初始化时,节点只需要一个,后续的插入只是插入新的节点,但是哈希表初始化时就不是那么简单了,哈希表初始化时需要申请一个数组,数组的每个元素都指向一条链表,所以初始化时需要申请很多内存,相比于map,的确更耗时。

map vs multimap: 均为红黑树底层实现,multimap支持重复的key,不能使用[]运算符

默认初始化为零(int),或空(string)

 

map.count(); //返回被查找的key是否存在 ,为1或0

map.find(); //返回被查找key 的位置,若没有则返回map.end()

 

 

 

map跟set使用举例:

//单词计数

map<string,int> wordcount;

set<string> exclude;

string word; 

while(cin>>word)

{

    if(exclude.find(word)==exclude.end())//排除word

      ++wordcount[word];

}

 

原文链接: https://www.cnblogs.com/lemon333333/p/10289660.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++ STL之unordered_map

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/288714

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 上午11:11
下一篇 2023年2月15日 上午11:12

相关推荐