set和map

1.关联式容器

---------------------------------------------------------------------------------------------------------------------------

1.关联式容器

序列式容器: vector 、 list 、deque

关联式容器:map/set

关联式容器就是数据和数据之间具有很强的关联性,底层用的就是红黑树,红黑树的底层说到底也是搜索树

-----------------------------------------------------------------------------------------------------------------------------

我们先学set  ---   set的本质就是key模型  ,用于确认在不在

 

 value_type是什么呢??

 

 这里set遍历出来的特征是有序的,因为set底层的搜索二叉树,搜索二叉树走中序是有序的

set这里可以间接完成 排序+去重

可是我要是想倒着遍历呢??

1.使用反向迭代器

2.我们可以去控制这颗树

 -----------------------------------------------------------------------------------------------------------------------------

erase

 这么看两种删除都可以,那么有什么区别呢??

第一种删除不存在的时候,不会有任何问题,第二个删除不存在的时候就会删除出问题

---------------------------------------------------------------------------------------------------------------------------------

count

但是count不是为了这里设计的,count的设计是为了保持接口的一致性

-------------------------------------------------------------------------------------------------------------------------------

 lower_bound和upper_bound

 equal_range

 ------------------------------------------------------------------------------------------------------------------------

我们现在在来看看map

 map插入的时候,插入的不在是一个数据,而是一个结构体,这个结构体的pair

我们来看看map  中 insert是如何传参的

 我们也可以使用make_pair 去替换pair<T1  ,    T2>

 

 map的遍历

 

 我们在这里也很喜欢用范围for

----------------------------------------------------------------------------------------------------------------------------

我们用map 来玩一个统计次数的东西

这是第一种玩法

我们的第二种玩法  ----->   使用operator[]

我们先从功能上看看这个函数

operator[]的功能非常强大

 nap   当中的at

 key存在返回value的引用,也可以修改

要是不存在会抛出一个异常

----------------------------------------------------------------------------------------------------------------------------

我们来看看operator[]底层是怎么实现的

回答: ES6中的SetMap是两种新增的集合类型。Set是一种无重复值的集合,可以通过new Set()来创建。它具有add方法用于向集合中添加元素,has方法用于判断集合中是否存在某个元素,clear方法用于清空集合。Set也可以用于数组去重,通过new Set(\[...\])的方式将数组转换为Set,利用Set的特性去除重复值。\[1\] Map是一种键值对的集合,可以通过new Map()来创建。它具有set方法用于向集合中添加键值对,get方法用于获取指定键名对应的值,has方法用于判断集合中是否存在某个键名,clear方法用于清空集合。Map的键名可以是任意数据类型,包括引用值,但需要注意的是,引用值作为键名时,需要使用相同的引用地址才能获取到对应的值。\[2\] SetMap都可以使用for...of循环或forEach方法进行遍历。在Set中,forEach的第二个参数是集合的元素,因为Set中不存在下标。而在Map中,forEach的第一个参数是键值对的值,第二个参数是键值对的键名。\[3\] 总结来说,SetMap是ES6中新增的集合类型,Set用于存储无重复值的集合,Map用于存储键值对的集合。它们提供了一些方法来操作集合,如添加、获取、判断是否存在等。在使用时需要注意它们的特性和方法的使用方式。 #### 引用[.reference_title] - *1* *2* [ES6中的MapSet详解](https://blog.csdn.net/m0_45093055/article/details/126430467)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ES6中的setmap](https://blog.csdn.net/weixin_44247866/article/details/127561391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值