map 使用(unordered_map 和 map)

1,unordered_map 和 map

    1)需要引入不同的头文件

     map: #include < map >
     unordered_map: #include < unordered_map >

    2)原理

        map:

                内部实现了一个红黑树(红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二叉搜索树),红黑树具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素。

                因此,对于map进行的查找,删除, 添加等一系列的操作都 相当于是对红黑树进行的操作。

    unordered_map:

        优点: 因为内部实现了哈希表,因此其查找速度非常的快
        缺点: 哈希表的建立比较耗费时间
        适用处:对于查找问题,unordered_map会更加高效一些,因此遇到查找问题,常会考虑一下用unordered_map
总结:

       map,内部是按照key排序的,第二种是unordered_map,容器内部是无序的,使用hash组织内容的

        内存占有率的问题就转化成红黑树 VS hash表 , 还是unorder_map占用的内存要高。
        但是unordered_map执行效率要比map高很多
        对于unordered_map或unordered_set容器,其遍历顺序与创建该容器时输入的顺序不一定相同,因为遍历是按照哈希表从前往后依次遍历的

   

上一篇:C++——STL(无序容器)


下一篇:C++容器map、unordered_map、set、unordered_set的区别