c++使用unordered_map与map的区别

内部实现机理
map: map内部实现了一个红黑树,该结构具有自动排序的功能,因此map内部的所有元素都是有序的,红黑树的每一个节点都代表着map的一个元素,因此,对于map进行的查找,删除,添加等一系列的操作都相当于是对红黑树进行这样的操作,故红黑树的效率决定了map的效率。
unordered_map: unordered_map内部实现了一个哈希表,因此其元素的排列顺序是杂乱的,无序的

[缺点以及适用处]

map
优点:
有序性,这是map结构最大的优点,其元素的有序性在很多应用中都会简化很多的操作
红黑树,内部实现一个红黑书使得map的很多操作在的时间复杂度下就可以实现,因此效率非常的高
缺点:
空间占用率高,因为map内部实现了红黑树,虽然提高了运行效率,但是因为每一个节点都需要额外保存父节点,孩子节点以及红/黑性质,使得每一个节点都占用大量的空间
适用处,对于那些有顺序要求的问题,用map会更高效一些

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

c++使用unordered_map与map的区别相关推荐

  1. stl中unordered_map 和 map的区别 ?

    stl中unordered_map 和 map的区别 目录 一.hash_map与unordered_map 二.unordered_map与map 三.unordered_map与unordered ...

  2. c++中map、multimap、unordered_map、unordered_multimap的区别

    前言: c++的各种容器使用的时候很方便,但是如果作为一个初学者,看到一堆库要记住也是很头疼的,而且很多库名称会很相似,所以我们要很好的使用这些库的时候,我们需要了解清楚它们底层实现的原理,这样我们使 ...

  3. [JS] for-each和map()的区别

    先说下for-each与for-of还有for-in的区别. for-of和for-in都是对对象操作的,而for-each和map()是对数组进行操作的. for-in的使用:对于一个数组里的每一个 ...

  4. JS数组中 forEach() 和 map() 的区别

    JS数组中 forEach() 和 map() 的区别 Array中 Array.forEach()和 Array.map()方法之间的区别. forEach()和map()方法通常用于遍历Array ...

  5. C++中的hash_map和map的区别

    1)为什么需要hash_map /* 例如: 我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑 张三丰-武当掌门人,太极拳创始人 东方不败-第一高手,葵 ...

  6. 浅谈Java中的Set、List、Map的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

  7. List Set Map的区别

    List Set Map各自实现类区别以及底层原理和实现 最新总结 List Set Map的区别 结构不同 List 和 Set 是存储单列数据的集合,Map 是存储键和值这样的双列数据的集合:Li ...

  8. java list set map的区别_Java集合类List/Set/Map的区别和联系

    Java集合类List/Set/Map的区别和联系 一.Array , Arrays Java所有"存储及随机访问一连串对象"的做法,array是最有效率的一种. 1. 效率高,但 ...

  9. 【重难点】【Java集合 02】Set、List、Map 的区别、常见的线程安全的集合类、Collection 为什么只能在 Iterator 中删除元素

    [重难点][Java集合 02]List.Set.Map 的区别.常见的线程安全的集合类.Collection 为什么只能在 Iterator 中删除元素 文章目录 [重难点][Java集合 02]L ...

最新文章

  1. java多线程aqs实现工具类_Java并发多线程 - 并发工具类JUC
  2. oracle控制文件发生坏块,控制文件坏块处理方法
  3. 【c语言】分解质因数
  4. Ajax方式上传文件报错Uncaught TypeError: Illegal invocation
  5. java模拟退火程序
  6. 5.【练习题】构造方法与重载
  7. java的for循环取出数据只是拿到最后一个_新兴大数据分析榆中百合
  8. H.264中的一些易混淆概念
  9. 解决导出word迅雷读取地址和下载出错
  10. 充满艺术范儿!艺术感在线的界面欣赏
  11. skala view android,Skala Preview for mac
  12. CentOS 6.4安装本地yum源
  13. ReactNative字体大小不随系统字体大小变化而变化
  14. [COGS 2479] [HZOI 2016] 偏序
  15. html画表盘 随时间转动,Html5画钟表盘/指针实时跳动
  16. 鸿蒙和小米哪个值得入手,鸿蒙系统能够吸引小米的优势是什么
  17. 扭蛋机html源码,微信小程序wxss制作扭蛋机
  18. java编译(打包)完成,导致Excel文件损坏的问题
  19. 2021-05-30_蓝桥杯嵌入式拓展板STM32G431--光敏电阻
  20. Python 保存图片的两种方法

热门文章

  1. Vue使用wangEditor 封装成独立组件实现富文本编辑器
  2. 爆款 | Medium上6900个赞的AI学习路线图,让你快速上手机器学习
  3. 2017全球光伏增速或放缓 国内“6·30”仍将是分水岭
  4. transform.rotation和GetComponentRigidbody().MoveRotation
  5. 以后再也不用看“教程”!概括【配置环境】的原理,小白也能举一反三的python配置环境过程!
  6. JavaScript 对象 和 函数
  7. 关于ckeditor的配置
  8. mysql数据库需求分析工具_一份全面的“数据库设计需求分析”是怎样的?
  9. OPTIRRA研究: TNF拮抗剂维持期优化减量方案[EULAR2015_SAT0150]
  10. 计算机类实训室建设公司,计算机专业实训室建设方案修改