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 multimap深度探索_第1张图片

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

map multimap深度探索_第2张图片

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

select1st在value中选择第一个,就是key。select1st是一个仿函数。map multimap深度探索_第3张图片
map multimap深度探索_第4张图片
multimap不能使用[]进行插入赋值

容器map独有的operator[]

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

map multimap深度探索_第5张图片

你可能感兴趣的:(c++学习)