zoukankan      html  css  js  c++  java
  • STL--map与unordered_map

    map

    --头文件:

    #include<map>

    --内部原理:

    map内部实现了一个红黑树(红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二叉搜索树),红黑树具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素。因此,对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行的操作。map中的元素是按照二叉搜索树(左子树上所有节点的键值<根节点的键值<右子树所有节点的键值)存储的,使用中序遍历可将键值按照从小到大遍历出来。

    --优点:

    有序,使得map的很多操作在lgn的时间复杂度下就可以实现,因此效率非常的高

    --缺点:

    空间占用大,因为map内部实现了红黑树,虽然提高了运行效率,但是因为每一个节点都需要额外保存父节点、孩子节点和红/黑性质,使得每一个节点都占用大量的空间

    适用处:对于那些有顺序要求的问题,用map会更高效一些

    unordered_map:

    --头文件:

    #include<unordered_map>

    --内部原理:

    内部实现了一个哈希表(通过把关键码值映射到Hash表中一个位置来访问记录,查找的时间复杂度可达到O(1),其在海量数据处理中有着广泛应用)。因此,其元素的排列顺序是无序的。

    --优点:

    因为hash表的原因,查找速度非常快

    --缺点:

    无序,hash表的建立比较费时间

    --适用于:

    查找问题

  • 相关阅读:
    Codeforces 691A Fashion in Berland
    HDU 5741 Helter Skelter
    HDU 5735 Born Slippy
    HDU 5739 Fantasia
    HDU 5738 Eureka
    HDU 5734 Acperience
    HDU 5742 It's All In The Mind
    POJ Euro Efficiency 1252
    AtCoder Beginner Contest 067 C
    AtCoder Beginner Contest 067 D
  • 原文地址:https://www.cnblogs.com/luo-he/p/14117792.html
Copyright © 2011-2022 走看看