生病卧床中……OTL
deque&queue 和 stack 深度探索上
容器 deque

分段串接
deque的iterator

map 实际是一个 vector,里面是指针
iterator 里面四部分 cur、first、last、node
first 和 last 是每一段里的首尾
deque<T>::insert()

deque 如何模拟连续空间

容器 queue

容器 Stack

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

handle and body
手法和本体分开
容器set,multiset


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


容器map,独特的operator[]

容器 hashtable

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

hash_function,hash-code
hashcode值要够乱才好
一开始就可以设置篮子大小
unordered 容器

网友评论