码迷,mamicode.com
首页 > 编程语言 > 详细

C++ - STL中map和unordered_map区别

时间:2021-03-17 14:26:54      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:优点   https   clu   提高   使用场景   节点   速度   csdn   自动   

头文件

  1. map:#include<map>

  2. unordered_map:#include<unordered_map>

底层实现

  1. map:内部是红黑树,自动排序,所以默认有序。

    • 补充:红黑树是非严格平衡二叉搜索树,而AVL是严格平衡二叉搜索树。
  2. unordered_map:内部是哈希表,所以默认无序。

时间复杂度

  1. map:因为基于红黑树,所以对于map进行的增删改查操作都相当于是对红黑树进行的操作,时间复杂度为 \(O(logn)\)

  2. unordered_map:因为基于一个哈希表(通过把关键码值映射到Hash表中一个位置来访问记录,可处理海量数据),所以查找的时间复杂度为 \(O(1)\)

map优缺点

  1. 优点:有序、大部分操作的时间效率高。

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

unordered_map优缺点

  1. 优点:查找速度快。

  2. 缺点:建立哈希表较耗时间。

使用场景

  1. map:基于有序性进行操作,用map。

  2. unordered_map:基于查找相关问题,用unordered_map。

操作

这俩操作使用都差不多,自行搜索。

参考博客

https://blog.csdn.net/BillCYJ/article/details/78985895

C++ - STL中map和unordered_map区别

标签:优点   https   clu   提高   使用场景   节点   速度   csdn   自动   

原文地址:https://www.cnblogs.com/OFSHK/p/14542522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!