一、关联式容器
STL 关联容器分为 set(集合)和 map(映射表)两大类,及其衍生体 multiset 和 multimap。这些容器的底层机制均以 RB-tree(红黑树)实现。RB-tree 也是一个独立容器,但并不开放使用。
SGI STL 还提供一个不在标准规格的关联式容器 hash_table(散列表),以及以 hash_table 为底层机制而完成的 hash_set散列集合、hash_map散列映射表、hash_multiset散列多键集合、hash_multimap散列多键映射表。
关联容器,类似关联式数据库,每个元素都有一个键值key和一个实值value。关联式容器的内部结构是一个平衡二叉树,包括 AVL-tree、RB-tree、AA-tree,STl 中运用的是 RB-tree红黑树。
二、红黑树 RB-tree
1. 基本性质
- RB-tree 是一个二叉搜索树。
- 每个节点只能是红色或黑色(图中深色代表黑色,浅色代表红色)。
- 根节点为黑色。
- 红色节点的子节点必须为黑。
- 任一节点至NULL(树的尾端)的任何路径&