map:

优点:

有序性,这是map结构最大的优点,其元素的有序性在很多应用中都会简化很多的操作

红黑树,内部实现一个红黑书使得map的很多操作在lgn的时间复杂度下就可以实现,因此效率非常的高

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

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

unordered_map:

优点: 因为内部实现了哈希表,因此其查找速度非常的快

缺点: 哈希表的建立比较耗费时间

适用处:对于查找问题,unordered_map会更加高效一些,因此遇到查找问题,常会考虑一下用unordered_map

总结:

1. 内存占有率的问题就转化成红黑树 VS hash表 , 还是unorder_map占用的内存要高。

2. 但是unordered_map执行效率要比map高很多

3. 对于unordered_map或unordered_set容器,其遍历顺序与创建该容器时输入的顺序不一定相同,因为遍历是按照哈希表从前往后依次遍历的

c++ map是有序还是无序的_c++中map与unordered_map的区别相关推荐

  1. c++ map是有序还是无序的_C++ STL中Map的按Key排序和按Value排序

    map是用来存放键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择. 我们这样定义 ...

  2. c++ map是有序还是无序的_c++ unorder_map的用法

    1.unorder_map与map不同:map的KEY值是有序的,而unorder_map则是无序的: 2.unorder_map自定义的KEY值时需要注意思下面两点: · KEY为一个类时,需要重载 ...

  3. Map的有序和无序实现类,与Map的排序

    Map的有序和无序实现类,与Map的排序 1.HashMap.Hashtable不是有序的: 2.TreeMap和LinkedHashMap是有序的(TreeMap默认 Key 升序,LinkedHa ...

  4. c++ map是有序还是无序的_go 学习笔记之数组还是切片都没什么不一样

    上篇文章中详细介绍了 Go 的基础语言,指出了 Go 和其他主流的编程语言的差异性,比较侧重于语法细节,相信只要稍加记忆就能轻松从已有的编程语言切换到 Go 语言的编程习惯中,尽管这种切换可能并不是特 ...

  5. java的map键值类型是否固定_Java中Map根据键值(key)或者值(value)进行排序实现

    我们都知道,java中的Map结构是key->value键值对存储的,而且根据Map的特性,同一个Map中 不存在两个Key相同的元素,而value不存在这个限制.换句话说,在同一个Map中Ke ...

  6. java 将map写入文件_如何将java中map数据写入txt文件中

    用户提问 例如 static{ //初始化默认用户 user.setUsername("admin"); user.setPassword("123"); tr ...

  7. C++_类和对象_封装_访问权限_C++中struct和class的区别---C++语言工作笔记037

    然后我们再来看c++中的访问权限控制,其实这个跟java中的很像 可以看到有3个,public 是类内类外都可以访问 protected 是保护权限,在类内可以访问,但是在类外不行.  这个在子类的时 ...

  8. Java8高效遍历map_Java8中Map的遍历方式总结

    在这篇文章中,我将对Map的遍历方式做一个对比和总结,将分别从JAVA8之前和JAVA8做一个遍历方式的对比,亲测可行. public class LambdaMap { private Map ma ...

  9. html中map标签的用法,HTML中的map和area标签

    1. 标签介绍: (1)map标签: 该标签是指图片的映射,也就是说一张可以点击的图片的映射: 属性介绍: <1> id: 中的 usemap 属性可引用 中的 id 或 name 属性( ...

最新文章

  1. LeetCode 105 Construct Binary Tree from Preorder and Inorder Traversal-前序中序遍历构造二叉树-Python和Java递归解法
  2. Android系统中提供的原子操作
  3. codeforces 480B B. Long Jumps(贪心)
  4. opencv图像前景目标提取
  5. GridView数据导入Excel/Excel数据读入GridView
  6. 《循序渐进学Spark》一1.7 本章小结
  7. Windows 下安装 Scala
  8. IT技术人需要具备哪些才能成功
  9. POJ 2063 (DP)
  10. Xcode 模拟器Simulator手动下载(iOS 8 - iOS 12)
  11. 使用VMWARE(VMware8)安装Mac OSX 雪豹操作系统
  12. 第二章 实例研究:设计一个文档编辑器--《设计模式-可复用面向对象软件的基础》Erich Gamma
  13. 一个ios开发者使用Android手机后的一些感想
  14. python中arcsec_在Python类中继承Cython类
  15. 用Chrome浏览器调试钉钉应用--Web页面调试
  16. 测控技术与仪器应该学计算机哪些,测控技术与仪器专业到底学到了什么?
  17. 罗马java_关于java:罗马数字转十进制的三种方法
  18. Maxon发布Cinema 4D R23
  19. PTA 11-散列1 电话聊天狂人
  20. linux 剪刀石头布c语言,C语言实现最简单的剪刀石头布小游戏示例

热门文章

  1. VMware 虚拟机 linux执行 ifconfig 命令 eth0没有IP地址
  2. Zookeeper的命令
  3. VS与SVN的交互VisualSVN
  4. kindle亚马逊个人文档不显示_4.68亿个人信息泄露,大数据时代裸奔?探悉不落地的文档在线预览...
  5. 昨天,JetBrains 推出“下一代 IDE”,快看看有哪些值得期待的功能!
  6. 使用CMS垃圾收集器产生的问题和解决方案
  7. 一天搞定HTML----标签语义化04
  8. php+json对象格式,PHP 创建对象来输出 JSON 格式
  9. python正则group()的用法—正则提取括号内以及其他符号内内容
  10. Java反射机制浅析