C++ STL源码剖析之map、multimap、initializer_list
map/multimap 以rb_tree为底层结构,因此有元素自动排序特点,排序的依据是key。
map/multimap提供"遍历"操作及iterators。按正常规则(++iter)遍历,便能够获得排序状态。
我们无法使用map/multimap的iterators改变元素的key(因为key有其严谨排列规则),但可以用它来改变元素的data。因此map/multimap内部自动将用户指定的key type设定为const,如此便能进制用户对元素key的赋值。
map元素的key必须独立无二,因此其insert使用的是rb_tree的_M_insert_unique(),而multimap元素的key可以重复,因此其insert使用的是rb_tree的_M_insert_equal()。
对于本节,我们将从下面几个内容阐述:
map的key为key,value为key+data,与set是不同的,set是key就是value,value就是key。
map的key不可修改,map与multimap的插入调用函数不同,影响了其key是否对应value。
initializer_list使用
map有[]操作符,而multimap没有[]操作符。
map
key为key,value为key