zoukankan      html  css  js  c++  java
  • STL中的map和unordered_map

    STL中的map和unordered_map

    map

    头文件 #include <map>

    原理:std::map的内部实现了一颗红黑树,有对其键值进行排序的功能,所以map是一个有序的容器,map中的每一个元素都是红黑树的一个节点,插入、删除、查找等操作的复杂度都是logn的

    //定义
    map<int,int> mp
    //插入
    1.mp.insert(pair<int, int>(x, y));
    2.mp[x]+=y;
    //删除
    mp.erase(x);
    mp.erase(mp.begin(),mp.end());//删除区间是一个前闭后开的区间
    //迭代
    map<int,int>::iterator it;
    for(it=mp.begin();it!=mp.end();it++)
    //利用迭代器查找键值或者直接得到该节点的值
    mp[x];
    map<int, int>::iterator it;//得到的迭代器是一个pair对象,键是							  //first,值是second
    
    it = mp.find(x);
    cout << it->second << endl;
    cout << (*it).second << endl;
    //大小
    mp.size();
    
    

    unordered_map

    头文件 #include <unordered_map>

    原理:std::unordered_map的内部实现了一个哈希表,其中的元素的无序的,unordered_map中每个特定的key都会通过一些特定的哈希运算到一个特定的位置,这个特定的位置可能重复,所以这个位置有多个元素,将这个位置称为哈希桶

    用法和map 是差不多的就不详细介绍了

    区别

    map查找比unordered_map慢一些

    unordered_map的建立会比map慢很多

    这样,如果我们建树后就不需要多次查询的话就用unordered_map

    建树后需要修改的话就用map吧

    还是看实际情况选择

    每一个不曾刷题的日子 都是对生命的辜负 从弱小到强大,需要一段时间的沉淀,就是现在了 ~buerdepepeqi
  • 相关阅读:
    关于document.body.scrollTop用法
    set回顾
    用户登录与注册
    编写通讯录2
    利用字典的特性编写一个通讯录
    shelve模块
    shutil模块
    列表的拓展
    随机生成验证码2
    递归与欧几里得算法结合求最大公约数
  • 原文地址:https://www.cnblogs.com/buerdepepeqi/p/10477667.html
Copyright © 2011-2022 走看看