第八周 C++标准库 体系结构与内核分析 Boolan 侯捷

生病卧床中……OTL

deque&queue 和 stack 深度探索上

容器 deque

容器 deque

分段串接

deque的iterator

deque的iterator

map 实际是一个 vector,里面是指针
iterator 里面四部分 cur、first、last、node
first 和 last 是每一段里的首尾

deque<T>::insert()

deque<T>::insert()

deque 如何模拟连续空间

模拟连续空间

容器 queue

容器 queue

容器 Stack

容器 Stack

queue和stack,关于其iterator和底层结构

queue和stack,关于其iterator和底层结构
  • queue和stack都可以选择list或deque作为底层结构。
  • queue不能选择vector作为底层结构,而stack可以。
  • queue和stack都不能选择set或map作为底层结构

容器 rb_tree

Red-Black tree(红黑树)是平衡二元搜索树(balanced binary search tree)中常被使用的一种。平衡二元搜索树的特征是:排列规则有利search和insert,并保持平衡——无任何节点过深。
rb_tree提供“遍历”操作及iterators。按正常规则(++ite)遍历,便能获得排序状态(sorted)。
我们不应使用rb_tree的iterators改变元素值(因为元素有其严谨排列规则)。编程层面(programming level)并未阻绝此事。如此设计是正确的,因为rb_tree即将为set和map服务(作为其底部支持),而map允许元素的data被改变,只有元素的key才是不可被改变的。
rb_tree提供两种insertion操作:insert_unique()insert_equal()。前者表示节点的key一定在整个tree中独一无二,否则插入失败;后者表示节点的key可以重复。

容器 rb_tree

容器 _Rb_tree

容器 _Rb_tree

handle and body
手法和本体分开

容器set,multiset

容器set,multiset
容器set

set的所有操作,都转呼叫底层t的操作。从这层意义看,set未尝不是个container adapter。

容器map,multimap

容器map,multimap
容器map

容器map,独特的operator[]

容器map,独特的operator[]

容器 hashtable

容器 hashtable

Separate Chaining
分开-串联
链表太长要打散,bucket篮子过长
元素个数比篮子个数还多,就要打散
打散的方式就是把篮子增加两倍

iterator

hash_function,hash-code

hashcode值要够乱才好
一开始就可以设置篮子大小

unordered 容器

unordered容器
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容