当前位置: 首页 > news >正文

C++笔记-set和map的使用

本章节讲解的map和set底层是红黑树,红黑树是一颗平衡二叉搜索树。set是key搜索场景的结构, map是key/value搜索场景的结构。

1.set系列的使用

1.1set的介绍

set就是我们上篇所实现的二叉搜索树的key搜索场景,它默认就是不存在重复数据的二叉搜索树,尔汗有重复数据的就是后面要讲的mutiset。

从上图可以看出,set的模板参数中含有三个不同的类型,第一个想必大家都知道,就是里面存储数据的类型。

第二个我们之前也讲过,就是仿函数,可以控制数据的输出顺序。

第三个是内存池,这部分知识我们还没有了解,这里就先跳过。

从以上图片可以看出,和我们之前所学的其它容器还是比较相似的,使用起来也非常相似:

这里可以看到set自动就对所传入的数据进行去重,并且按照升序排序的方式,而我们如果想让其输出的方式是从大到小,也可以利用仿函数:

并且我们是不能修改set中的值:

不能修改的原因呢我们上一篇已经讲过,会破坏二叉搜索树的结构,如果能修改那么二叉搜索树就失去了意义。

下面来讲解set中一些接口的使用方法。

1.2find

set中的find接口通过传入的值进行查找,如果找到了就返回相应的迭代器,也就是对应数据的位置,如果没有找到,就返回end()迭代器。

这里我们通过find接口来找5这个数据,结果显示找到了,说明此时返回的迭代器并不是end()。

而如果我们来找1这个数据,结果并没有找到,说明此时find返回的就是end()。

1.3erase

erase和我们之前所学容器的erase有些不一样,从上图对set的介绍可以看出,除了我们常见的void返回值以外,还有个size_type做返回值的。

而在set中这个size_type就是0或者1,删除成功返回1,删除失败就返回0,而这样设计的原因是为了和mutiset相照应。

可以看出此时的返回值时1,说明删除成功,我们通过再次打印出set中的数据也可以看到2已经被删除。

这里我们要删除1,发现删除失败,此时erase的返回值就为0。

1.4count

count接口就是来查找某个数据有几个,而在set中我们知道数据要么没有,要么只有一个,所以在set中count主要用来判断传入的数据在不在。

count的返回值依旧是1或者0,我们可以利用count的这个功能来写一种题型:

比如就像力扣上的这种题,我们就可以利用set来解决会更加的简单:

因为一个数组中蛊蛾可能会有重复的数据,所以利用set的去重特性以及count判断数据在不在,这道题写起来就极为简单。



http://www.jsqmd.com/news/738980/

相关文章:

  • 5分钟终极指南:如何快速上手Competitive Companion编程竞赛神器
  • DoL-Lyra终极整合包:5分钟打造你的专属游戏美化方案
  • 解放双手,轻松冲层:D3KeyHelper暗黑3鼠标宏工具完全指南
  • PREEMPT_RT 技术实现:rt_mutex
  • 8大主流网盘直链下载助手:告别限速烦恼的终极解决方案
  • AI智能体开发实战:从工具链选型到工程化部署全解析
  • 新手首次使用Taotoken调用Codex模型完成代码补全的全流程指南
  • 实测taotoken多模型api在c语言项目中的响应延迟与稳定性
  • 海思Hi35xx芯片开发避坑指南:SVP、MPP、NNIE、ACL四大模块到底怎么用?
  • 为初创公司 MVP 产品快速集成 AI 功能并控制成本
  • 长期项目使用Taotoken在账单追溯与用量分析上的便利
  • 洛谷 P15816 [JOI 2015 Final] 铁路旅行 / Railroad Trip 题解
  • MySQL 5.7.37安装audit日志审计插件完整流程(含SELinux关闭与offset配置避坑)
  • 初创公司如何借助Taotoken低成本试错不同大模型能力
  • 2026届最火的十大降重复率工具横评
  • 如何快速配置Cyber Engine Tweaks:面向《赛博朋克2077》玩家的完整优化指南
  • 华为手机Bootloader解锁:用PotatoNV实现免拆机自由定制
  • 用ESP32和DengFOC驱动板,5分钟搞定无刷电机FOC控制(附完整代码)
  • 告别权限报错!Win11管理员模式+Python 3.11安装Binwalk完整避坑实录
  • 3分钟学会:如何永久保存你喜欢的B站视频(m4s转MP4完整指南)
  • Linux桌面光标主题定制:从Circularity-Cursor安装到个性化配置全攻略
  • 微信好友关系检测终极指南:3分钟找出谁偷偷删了你
  • 轻量级多模态学习框架LightFusion解析与应用
  • NASA旅行者一号再“断电” 懂游宝20亿元整合游戏交易平台
  • 跨平台游戏模组获取指南:WorkshopDL如何打破Steam创意工坊壁垒
  • 智慧树刷课插件终极指南:3步实现自动化学习效率翻倍
  • 手把手教你复现百卓Smart S85F文件上传漏洞(CVE-2024-0939),附Yakit实战截图
  • 三步打造你的中国象棋AI智能助手:VinXiangQi完整指南
  • 从‘弹个窗’到‘拿Cookie’:用Burp插件xssValidator实战演练三种XSS漏洞的完整攻击链
  • QKeyMapper:一款无需重启Windows的按键映射解决方案