散列表和红黑树

哈希函数和散列表很普遍,在此就不介绍了。下面介绍一下红黑树的概念(代码太难了 溜了溜了 等我成为大佬再钻研)

红黑树的定义:

  • 每个节点非红即黑
  • 根节点是黑的;
  • 每个叶节点(叶节点即树尾端NULL指针或NULL节点)都是黑的;
  • 如图所示,如果一个节点是红的,那么它的两儿子都是黑的;
  • 对于任意节点而言,其到叶子点树NULL指针的每条路径都包含相同数目的黑节点;
  • 每条路径都包含相同的黑节点;

map

map是通过红黑树实现的,红黑树内的数据时有序的,在红黑树上查找的时间复杂度是O(logN),相对于unordered_map的查询速度有所下降,但额外空间开销减小。

插入

map有三种方式插入:

  • pair
  • make_pair
  • 大括号形式
map<int, int>mymap;
mymap.insert(pair<int,int>(num[i],1));
mymap.insert(make_pair(num[i], 1));
mymap.insert({num[i],1});

 访问映射

访问映射合,直接用 [] 就能访问。比如 dict[“Tom”] 就可以获取 “Tom” 的班级了。而这里有一个比较神奇的地方,如果没有对 “Tom” 做过映射的话,此时你访问 dict[“Tom”] ,系统将会自动为 “Tom” 生成一个映射,其 value 为对应类型的默认值。并且我们可以之后再给映射赋予新的值,比如 dict[“Tom”] = 3 ,这样为我们提供了另一种方便的插入手段。

查找关键字 

find count

遍历映射

for(map<int, int>::iterator iter=mymap.begin();iter!=mymap.end();iter++)

 删除关键字

erase

underde_map

undered_map使用哈希表实现。unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value。不同的是unordered_map不会根据key的大小进行排序,存储时是根据key的hash值判断元素是否相同,即unordered_map内部元素是无序的,而map中的元素是按照二叉搜索树存储,进行中序遍历会得到有序遍历。

集合

C++中map与unordered_map, set与unordered_set相关推荐

  1. 原 c++中map与unordered_map的区别

    c++中map与unordered_map的区别 头文件 map: #include < map > unordered_map: #include < unordered_map ...

  2. c++ map是有序还是无序的_c++中map与unordered_map的区别

    map: 优点: 有序性,这是map结构最大的优点,其元素的有序性在很多应用中都会简化很多的操作 红黑树,内部实现一个红黑书使得map的很多操作在lgn的时间复杂度下就可以实现,因此效率非常的高 缺点 ...

  3. C++ map和unordered_map详解

    C++ map和unordered_map详解 官方文档链接 概述   C++中map和unordered_map提供的是一种键值对容器,在实际开发中会经常用到,它跟Python的字典很类似,所有的数 ...

  4. set/multiset/unordered_set和map/multimap/unordered_map基础汇总

    引言 在STL中,有两种很常见的关联容器,分别是set和map,序列容器的元素是按照在容器中的位置来顺序保存和访问的,而关联容器的元素是按关键元素来保存和访问的.所以关联容器经常用在关键字的查找中,效 ...

  5. C++ set与map、unordered_map、unordered_set与哈希表

    哈希表           表: 存储数据 key –> value; 用表来存储数据结构的困难: 查找困难.一个一个key去比较去查找,效率不高.因此有了Hash算法加快查找; 将字符串的ke ...

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

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

  7. C++中的map问题+unordered_map问题

    目录 4.map问题+unordered_map问题 4.1 map 4.1.1 map的使用 4.1.2 构造map 4.1.3 往map中插入元素 4.1.4 在map中查找元素 4.1.5 删除 ...

  8. STL系列:map和unordered_map

    map和unordered_map的使用 unordered_map的用法和map是一样的,提供了insert,size,count,find等操作,并且里面的元素也是以pair类型来存贮的. 其底层 ...

  9. c++查找pair,使用map,unordered_map,vector

    map和unordered_map都可以简单的实现,因为本身就是键值对,而且都提供find方法,相对来说unordered_map比map略快. vector使用find_if函数,并且最简单的用法就 ...

最新文章

  1. repmgr 4.3 发布,PostgreSQL 复制与故障转移管理工具
  2. little kernel中如何决定app目录下应该包含哪个app
  3. 102. 最佳牛围栏【二分 / 思维 不错】
  4. Matlab如何实现区间优化
  5. win8 开发之旅(5) --五子棋游戏开发
  6. 【大数据之路-阿里巴巴大数据实践】第一篇 数据技术篇
  7. 弱监督学习综述(Weak Supervision 2019)
  8. VMware中Linux虚拟机root密码重置
  9. DNS 协议是什么?
  10. java rd th 小票机_英语日期rd,th有什么区别,怎么运用
  11. Java LocalDateTime给当前时间加半小时
  12. 嘉洋独家观点:关于近期股市的详解
  13. 从零入门激光SLAM(一)——什么是SLAM
  14. 学术诚信的重要性_宋瑞:坚持学术诚信 恪守学术道德 捍卫学术尊严
  15. 参加陈老师《协同》新书分享会及自我感悟
  16. 关于服务器配置的详细进度
  17. 认识电子计算机教案ppt,认识计算机_课件.ppt
  18. arcgis10.8深度学习介绍课程梳理
  19. 分享一些前端开发者需要知道的 API 接口常识
  20. Cleave input输入框 自动格式化内容

热门文章

  1. 信息学奥赛C++语言:重组
  2. 16 FI配置-财务会计-为准备激活销售会计核算的成本
  3. 3.2 SE11创建数据元素
  4. 红黑树结构完整实现与详解
  5. php修改特定位bit的值,解读天书 - 漏洞利用中级技巧的分析
  6. lightgbm 数据不平衡_数据不平衡问题
  7. haproxy+keepalived实现高可用K8S集群部署
  8. new关键字和newInstance()方法的区别?Class.forName()
  9. excel中画图坐标轴更改数字大小_Excel柱状图看不清?用这3种方法就可以
  10. 聚簇索引和非聚簇索引详解