c++使用unordered_map与map的区别
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的区别相关推荐
- stl中unordered_map 和 map的区别 ?
stl中unordered_map 和 map的区别 目录 一.hash_map与unordered_map 二.unordered_map与map 三.unordered_map与unordered ...
- c++中map、multimap、unordered_map、unordered_multimap的区别
前言: c++的各种容器使用的时候很方便,但是如果作为一个初学者,看到一堆库要记住也是很头疼的,而且很多库名称会很相似,所以我们要很好的使用这些库的时候,我们需要了解清楚它们底层实现的原理,这样我们使 ...
- [JS] for-each和map()的区别
先说下for-each与for-of还有for-in的区别. for-of和for-in都是对对象操作的,而for-each和map()是对数组进行操作的. for-in的使用:对于一个数组里的每一个 ...
- JS数组中 forEach() 和 map() 的区别
JS数组中 forEach() 和 map() 的区别 Array中 Array.forEach()和 Array.map()方法之间的区别. forEach()和map()方法通常用于遍历Array ...
- C++中的hash_map和map的区别
1)为什么需要hash_map /* 例如: 我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑 张三丰-武当掌门人,太极拳创始人 东方不败-第一高手,葵 ...
- 浅谈Java中的Set、List、Map的区别
就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...
- List Set Map的区别
List Set Map各自实现类区别以及底层原理和实现 最新总结 List Set Map的区别 结构不同 List 和 Set 是存储单列数据的集合,Map 是存储键和值这样的双列数据的集合:Li ...
- java list set map的区别_Java集合类List/Set/Map的区别和联系
Java集合类List/Set/Map的区别和联系 一.Array , Arrays Java所有"存储及随机访问一连串对象"的做法,array是最有效率的一种. 1. 效率高,但 ...
- 【重难点】【Java集合 02】Set、List、Map 的区别、常见的线程安全的集合类、Collection 为什么只能在 Iterator 中删除元素
[重难点][Java集合 02]List.Set.Map 的区别.常见的线程安全的集合类.Collection 为什么只能在 Iterator 中删除元素 文章目录 [重难点][Java集合 02]L ...
最新文章
- java多线程aqs实现工具类_Java并发多线程 - 并发工具类JUC
- oracle控制文件发生坏块,控制文件坏块处理方法
- 【c语言】分解质因数
- Ajax方式上传文件报错Uncaught TypeError: Illegal invocation
- java模拟退火程序
- 5.【练习题】构造方法与重载
- java的for循环取出数据只是拿到最后一个_新兴大数据分析榆中百合
- H.264中的一些易混淆概念
- 解决导出word迅雷读取地址和下载出错
- 充满艺术范儿!艺术感在线的界面欣赏
- skala view android,Skala Preview for mac
- CentOS 6.4安装本地yum源
- ReactNative字体大小不随系统字体大小变化而变化
- [COGS 2479] [HZOI 2016] 偏序
- html画表盘 随时间转动,Html5画钟表盘/指针实时跳动
- 鸿蒙和小米哪个值得入手,鸿蒙系统能够吸引小米的优势是什么
- 扭蛋机html源码,微信小程序wxss制作扭蛋机
- java编译(打包)完成,导致Excel文件损坏的问题
- 2021-05-30_蓝桥杯嵌入式拓展板STM32G431--光敏电阻
- Python 保存图片的两种方法
热门文章
- Vue使用wangEditor 封装成独立组件实现富文本编辑器
- 爆款 | Medium上6900个赞的AI学习路线图,让你快速上手机器学习
- 2017全球光伏增速或放缓 国内“6·30”仍将是分水岭
- transform.rotation和GetComponentRigidbody().MoveRotation
- 以后再也不用看“教程”!概括【配置环境】的原理,小白也能举一反三的python配置环境过程!
- JavaScript 对象 和 函数
- 关于ckeditor的配置
- mysql数据库需求分析工具_一份全面的“数据库设计需求分析”是怎样的?
- OPTIRRA研究: TNF拮抗剂维持期优化减量方案[EULAR2015_SAT0150]
- 计算机类实训室建设公司,计算机专业实训室建设方案修改