- 所谓关联式容器,观念上类似关联式数据库(实际上则简单许多):每笔数据(每个元素)都有一个键值(key)和一个实值(value) 2。当元素被插入到关联式 容器中时,容器内部结构(可能是RB-tree,也可能是hash-table)便依照其键 值大小,以某种特定规则将这个元素放置于适当位置.
- 关联式容器没有所谓头尾(只有最大元素和最小元素),所以不会有所谓push_back()、push_f ront ()、 pop_back()、pop_f ront () . begin。、end() 这样的操作行为。
- 一般而言,关联式容器的内部结构是一个balanced binary tree (平衡二叉树),以便获得良好的搜寻效率.balanced binary tree有许多种类型,包 括 AVL-tree.RB-tree、AA-tree,其中最被广泛运用于S T L 的是RB-tree (红黑树)。为了探讨 S T L 的关联式容器,我必须先探讨RB-tree.
- size 节点数量,包含自身
- height 叶子节点是0,逐个向上递增
- depth 根节点是0,逐个向下递增
- length 从根节点到 计算节点之间的边的个数
二叉搜索数
源码这一块 已经懵逼
类似链表中的dummptynode,他的作用使得 对于头结点的操作和其余的节点操作是一致的
- 接下来,每当插入新节点时,不但要依照RB-tree的规则来调整,并且维护 header的正确性,使其父节点指向根节点,左子节点指向最小节点,右子节点指 向最大节点。节点的插入所带来的影响,是下一小节的描述重点。
左右子树高度相差为2时,会进行平衡,赋值仅仅改变颜色即可