C++ STL(第十二篇:容器--关联式容器介绍和树的导览)

1、关联式容器

前面刚开始整理 STL 容器 时,简单的说了一下容器可以分为两类 序列式容器关联式容器。前面又对主要的 序列式容器 进行了整理,今天终于轮到 关联式容器了。

所谓关联式容器,观念上类似关联式数据库:每笔数据都有一个键值(key)和一个实值(value)。当元素插入到关联式容器中时,容器内部结构便依照其键值大小,以某种特定规则将这个元素放置于适当位置。关联式容器没有所谓头尾(只有最大元素和最小元素),所以不会有所谓 push_back()、push_front()、pop_back()、pop_front()、begin()、end()等操作。

标准的 STL 关联式容器分为 set(集合) 和 map (映射)两大类,以及这两大类的衍生体 multiset(多重集合)和 multimap(多重映射表)。这些容器的底层机制均以 RB-tree (红黑树)完成。RB-tree 也是一个独立容器,但并不开放给外界使用。

此外,还有一些 STL 库提供了一个不再标准规格之列的关联式容器,如hash table,以及以此衍生出的 hash_set、hash_map、hash_multiset、hash_multimap等。

2、树的导览

一般而言,关联式容器的内部结构是一个 balanced binary tree(平衡二叉树),以便获得良好的搜寻效率。balanced binary tree 有许多种类型,包括 AVL-tree、RB-tree、AA-tree,其中最被广泛运用于STL的是 RB-tree(红黑树)。为了探讨 STL 的关联式容器,我们必须先探讨RB-tree。而要探讨 RB-tree,我们需要先来探讨树。

树(tree),在计算机科学里,是一种十分基础的数据结构。几乎所有操作系统都将文件存放在树状结构中

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值