map multimap深度探索

map/multimap说明

map/multimap以红黑树为底层结构,因此元素有元素自动排序的特性。排序依据是key

map/multimap提供“遍历”操作以及iterator
按正常规则++ite遍历,便能获得排序状态sorted

我们无法使用map/multimap的iterator改变元素的key(因为key有其严谨排序规则),但是可以用它来改变元素的data。因此map/multimap内部自动将user指定的key_type设为const,如此便能禁止user对元素的key赋值

map元素的key必须是独一无二的存在,因此inertt()使用的是rb_tree的insert_unique();
multimap元素的key可以重复,因此inert()用的是rb_tree的inert_equal()

在这里插入图片描述

容器map使用红黑树为底层的源代码

在这里插入图片描述

禁止修改key的实现
map的迭代器就是红黑树的迭代器,但是在传入可key和value的类型后,组成pair中的key类型是const类型,所以它不可以修改

select1st在value中选择第一个,就是key。select1st是一个仿函数。在这里插入图片描述
在这里插入图片描述
multimap不能使用[]进行插入赋值

容器map独有的operator[]

key不存在的话设为value的默认值

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值