红黑树作为关联式容器(map、set等)的两大实现基础之一(另一种是Hash表),下图是它的数据结构原理(简略),主要是因为这种数据结构不会在树的某一支上深度过深,平均深度大致相同。而且它的排列方式是确定的,即从树的最左边开始进行序列排序,像下图中的数字一样,自左往右增长
    image.png
    红黑树在代码实现上,有多达五个参数要去填,第二个Value是指的key和其包含的数据的节点,KeyOfValue是指根据key取Data的方式,Compare是比较元素大小的标准方式,这两个一般都是由函数给定。
    image.png
    RB-Tree的占据内存,在G2.9中,是12个字节,为什么呢?成员变量里面是一个整型(4),一个指针(4),一个仿函数(0个实际编译器给1个),总共是9个,但内存分配不去设置单位大小,就默认依照前面给分配4个字节,所以一共是12个。
    image.png
    下面是G4.9的实现,占据24字节单位。
    image.png