- 是一种平衡二叉搜索树:① 平衡:为了防止树的某一侧太偏 ② 搜索:通过begin()迭代器不断++,就可以遍历整棵二叉树,相当于中序遍历,自然也可以指定排序规则,这样就按照排序规则遍历整棵树
- RB_tree提供双向迭代器,但RB_tree本身提供的迭代器并不限制做修改动作,而以rb_tree为底层结构的容器通过某些技巧限制了修改key的动作:
之所以不能修改key,因为rb_tree本身是根据元素的key经过compare来维持严谨的有序状态;
map,multimap:为了防止修改key值,但可以修改value值,因此在声明value_type类型时typedef pair<const Key, T> value_type
set,multiset:为了防止修改key值,在声明iterator时直接typedef typename rep_type::const_iterator itertor
- rb_tree本身提供了两个插入接口:insert_unique和uni_equal,区别在于是否允许相同元素
set,map的插入动作,转调用rb_tree的insert_unqiue
multiset,multi_map的插入动作,转调用rb_tree的insert_equal