zoukankan      html  css  js  c++  java
  • 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];
    
    }
  • 相关阅读:
    sql count中加条件
    zero-copy总结
    问题诊断神器arthas
    rabbitmq 消息确认
    HttpRunner安装笔记(1)安装环境准备:pyenv安装
    centos7 安装rabbitmq3.4.1-1
    centos7 python2.7.5 升级python3.6.4
    测试面试必会sql(1)
    mysql5.6 无法远程连接问题解决
    Katalon 学习笔记(一)
  • 原文地址:https://www.cnblogs.com/lemon333333/p/10289660.html
Copyright © 2011-2022 走看看