28map,set关联式容器

序列式容器 vector、list、deque(单纯的纯数据)

关联式容器 map、set,哈希,,,(数据之间有很强的关联性,不是单纯的为了存储数据)

Set

底层是搜索树(红黑树)

T是key ,compare是仿函数,alloc是空间配置器(暂不用管)

set不支持修改 *it=10(错误)

遍历出来的结果是升序(中序遍历)不允许有重复值

set可以用范围for,因为他支持迭代器

pair 

是个类

set的insert会判断是否有重复的,重复就不插入(所以有bool类型判断)返回类型是pair

insert的返回值  第一个参数是iterator,第二个是bool

pair有两个成员  第一个first ,第二个second

 类外面用要指定内域

erase

删除是指即使不存在的位置也没有什么影响(返回值是size_type=size_t)

可以删除指定位置(位置是find返回的迭代器位置)

 

如果找的不存在返回的就是end()迭代器不存在的位置删除会报错

erase(end)就会崩溃

删除不存在的值没影响

find

找到就返回该位置的迭代器,找不到就返回end

lower_bound

给一个值,返回一个迭代器 

如果lower_bound(25)也是删除30-60,他返回大于等于(upper返回>val的值)val值的迭代器

 equal_range

返回这个值和比他大的另一个值

first是>=val的值,second是>val的值

count 

返回val的个数(判断在不在)

multiset

允许已经存在的节点再次插入(变异搜索树)

遇到相同放在左右都一样,长了就旋转

那他的迭代器返回那一个重复的元素呢?返回中序第一个val

equal-range对于mutiset来说可以删除指定重复的所有这个数

此时count()在这里就可以方便查询重复元素个数

erase()在mulset中 他把重复的数都删除了,删除多少个可以返回一个size_t

总结:查找在不在,排序+去重

而multiset也可以去重

map

key v模型,底层是树

他有两个模版参数

insert

两个模版参数但是insert只有一个值,这个值是value—type类型的值,他的value—type

是一个pair类型,有两个模版参数first是key,second是val

注意这里key前面是const,set不可以修改,map是不想key被修改,只让val修改

(const也不用写内部会转换)

但是first也可以不写const 为什么呢?(内部会转换)

同一个模版模版参数不一样就是不一样的类型

string形参是const string

pair支持带参的构造和无参的构造,和拷贝构造(原因就在这)

 此时如果传const string,string就是拷贝构造,如果传const char*,const char*就变成了构造

 make pair函数模版

函数模版特点就是可以自己推演模版参数

pair用的时候需要显示的实例化,而makepair他会自己推导

而makepair他会自己推导 ,基于上面解释过为什么以传const char*类型,这里就不仅可以判断出,right,和右边的类型是const char*(pair有构造),而且可以传两个string对象 

 插入的是pair类型所以迭代器*it=是pair *it.first是第一个值,second是第二个值

 

list<Date>自定义类型指针用的是-> 

第一个->是函数调用调用重载函数返回的是pair*再->指向first

 这里范围for加上引用,dict装换成迭代器 it 然后*it(*it里面还是string,代价大)一次给kv不加引用就是拷贝

其次first不能修改,second可以修改,kv前面没有const,不然first和second都不能修改

那为什么first不能修改?因为pair里面first前面有const

map统计次数

ret是个迭代器用迭代器让second++

 

 mat【】

这里的[ ]是你给的这个key(str)他返回这个key对应的val,并且是这个val(次数)的引用

ke_type是key的类型,mapped_type是val的类型

水果第一次出现(countMap【str】)先插入 ,0次返回(水果所在的)迭代器,迭代器.second是0,0++,变成1次,再插入就插入失败只返回第已存水果的迭代器,val一直++,

第一个erase相当于插入(size++)没有val(val用的是默认构造,int是0char是/0,指针是空指针)

 第二个erase查找erase已经存在,返回已存在的erase,key的迭代器

第三个再查找

第四个test插入+修改 相当于(*it)->first=“测试”

第五个test插入+修改 相当于(*it)->first=“左边,剩余”

multimap

不能像上面一样统计次数了因为它允许重复内容插入

不支持【】,跟map比只是键值冗余(有重复的值)

不支持【】因为有多个重复的元素(key),有【】对个key到底返回谁?

map不关注val的问题如果key相同就认为已经有了不会看val

  sort可以对pair排序

排序依据key小就小,可以不小的话看val小就小

交集差集思路

 set可以有序加去重

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/564347.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

150G全国1米分辨率土地利用数据【2023年】

#1数据摘要 全国1米分辨率土地利用数据 全国范围,分省份分类,1米精度土地利用数据。2023年版本。 数据格式:tif 坐标系:wgs1984 范围:全国各省份 时间:2023年 精度:1米 地类:共计11个地类 中国1m分辨率土地覆盖数据 文件命名与介绍:数据为GeoTIFF栅格格式,每个城市…

lvgl图形化设计工具GUI Guider结合使用

前言 上篇博客整合了lvgl到项目中&#xff0c;采用的是自己编写源码的方式&#xff0c;实现了个简单的界面。实际过程中一般情况开发界面都借助设计工具&#xff0c;这里使用的是gui guider来进行示例记录 项目结构&#xff08;生成代码路径依然放到项目路径下&#xff09; C…

知识图谱的起源与发展

文章目录 知识图谱的发展历史知识图谱的重要性知识图谱与Ontology、语义网络之间的区别知识图谱的定义 知识图谱的发展历史 知识图谱始于20世纪50年代&#xff0c;至今大致分为三个发展阶段&#xff1a;第一阶段 &#xff08;1955年—1977年&#xff09;是知识图谱的起源阶段&a…

ThingsBoard教程(二十九):详细讲解在tb平台下 http协议下的客户端rpc,服务的rpc的使用

客户端rpc 先来说一下简单的客户端rpc, 客户端发起rpc请求,只需要使用post方法调用该接口即可以 http://host:port/api/v1/$ACCESS_TOKEN/rpc请求路径中间的参数 ACCESS_TOKEN 必须是设备的访问令牌。 请求携带的参数如下,二个参数method和params {"method": …

uniapp H5的弹窗滚动穿透解决

目录 方案一 事件修饰符 overscroll-behavior 修饰符 overscroll-behavior 属性 看个案例 兼容 方案二 overflow&#xff1a;hiden 有一层遮罩蒙层覆盖在body上时&#xff0c;当我们滚动遮罩层&#xff0c;它下面的内容也会跟着一起滚动&#xff0c;看起来好像是上面的…

ChatGPT研究论文提示词集合4-【结论】、【论文写作】和【审稿与修订】

点击下方▼▼▼▼链接直达AIPaperPass &#xff01; AIPaperPass - AI论文写作指导平台 目录 1.结论 2.论文写作 3.评审和修订 4.书籍介绍 AIPaperPass智能论文写作平台 近期小编按照学术论文的流程&#xff0c;精心准备一套学术研究各个流程的提示词集合。总共14个步骤…

Numpy方法总结(二)

一. 高级索引 相比于基本索引&#xff0c;高级索引可以访问到数组中的任意元素&#xff0c;并且可以用来对数组进行复杂的操作和修改。 1.整数数组索引 整数数组索引是指使用一个数组来访问另一个数组的元素。这个数组中的每个元素都是目标数组中某个维度上的索引值。 示例…

Ghost Buster Pro for Mac:强大的系统优化工具

Ghost Buster Pro for Mac是一款功能强大的系统优化工具&#xff0c;专为Mac用户设计&#xff0c;旨在提供全方位的系统清理、优化和维护服务。 Ghost Buster Pro for Mac v3.2.5激活版下载 这款软件拥有出色的垃圾清理能力&#xff0c;能够深度扫描并清除Mac上的无效目录、文件…

《从零开始的Java世界》07常用类与基础API

《从零开始的Java世界》系列主要讲解Javase部分&#xff0c;从最简单的程序设计到面向对象编程&#xff0c;再到异常处理、常用API的使用&#xff0c;最后到注解、反射&#xff0c;涵盖Java基础所需的所有知识点。学习者应该从学会如何使用&#xff0c;到知道其实现原理全方位式…

尾矿库安全监测:仪器埋设与维护的关键要求

尾矿库作为矿业生产的重要组成部分&#xff0c;其安全运营对于保障人员生命安全和环境保护具有至关重要的意义。为了确保尾矿库的安全运行&#xff0c;及时发现潜在的安全隐患&#xff0c;必须采取有效的安全监测措施。本文将重点探讨尾矿库安全监测仪器的埋设及维护要求。 一、…

​「Python绘图」绘制皮卡丘

python 绘制皮卡丘 一、预期结果 二、关键代码 import turtle print("开始绘制皮卡丘") def getPosition(x, y):turtle.setx(x)turtle.sety(y)print(x, y)class Pikachu:def __init__(self):self.t turtle.Turtle()t self.tt.pensize(3)t.speed(190)t.ondrag(getP…

Linux命令接着学习

which命令&#xff0c;找到各种命令程序所处在的位置 语法&#xff1a;which查找的命令 那么对于我们想查找其他类型文件所在的位置&#xff0c;我们可以用到find命令 find命令 选项为-name&#xff0c;表示按照文件名进行查找 find命令中通配符 find命令和前面rm命令一样&…

Linux及tmux、vim常用命令

Linux 关于Linux的简介、诞生、迭代&#xff0c;大家可以去网上查一查&#xff0c;这里不多做赘述了 Linux文件类型 非常重要的文件类型有: 普通文件&#xff0c;目录文件&#xff0c;链接文件&#xff0c;设备文件&#xff0c;管道文件&#xff0c;Socket 套接字文件 等。 …

2024团体设计天梯赛之L1-101 别再来这么多猫娘了

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

D咖饮品机器人惊艳亮相:智能硬件改变生活习惯

在当今快节奏的生活中&#xff0c;人们对于便捷、高效的需求日益增长&#xff0c;智能硬件应运而生&#xff0c;其中饮品机器人作为一种新型的智能设备&#xff0c;正在以惊艳的姿态亮相于人们的生活中&#xff0c;为人们带来了全新的消费体验&#xff0c;改变着大众的生活习惯…

CV算法工程师的LLM日志(5)Mixture-of-depths——transformers改进结构 【15分钟代码和原理速通】

前言 简而言之&#xff0c;这是google对transformer一些改进设计&#xff0c;如果这个有效性能够证明并普及&#xff0c;那么下一个大模型的transformer范式就是这个了&#xff0c;当然同时也存在mamba和transformer的jamba崛起&#xff0c;不过现在主流还是transformer&#…

nlp 自然语言处理的dataset数据库积累

下面的这个和 entity recognition有关的。 Weights & Biases

巧用波卡生态优势,Mythical Games 引领 Web3 游戏新航向

Polkadot 对创新、安全和治理的承诺为 Mythical Games 提供了极大的发展价值。这个链上生态不仅将支持 Mythical Games 成长发展&#xff0c;还将帮助其他 Mythos 合作伙伴来壮大建设项目。 —— Mythical Games 创始人兼首席执行官 John Linden 近期 Web3 游戏行业又有新动向&…

《C语言深度解剖》(8):一篇文章彻底学会Visual Studio 调试技巧,新手必看!

&#x1f921;博客主页&#xff1a;醉竺 &#x1f970;本文专栏&#xff1a;《C语言深度解剖》 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多数据结构与算法点击专栏链接查看&am…