• 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
  • 相关阅读:
    SpringBoot-13-简单整合Dubbo
    SpringBoot-12-整合Redis
    SpringBoot-11-任务
    SpringBoot-10-Swagger
    SpringBoot-09-Apche Shiro
    SpringBoot-08-Spring Security
    五十七-代码审计-JAVA项目框架类漏洞分析报告
    五十六:代码审计-JAVA项目Filter过滤器及XSS挖掘
    五十五:代码审计-JAVA项目注入上传搜索或插件挖掘
    五十四:代码审计-TP5框架审计写法分析及代码追踪
  • 原文地址:https://www.cnblogs.com/buerdepepeqi/p/10477667.html
Copyright © 2020-2023  润新知