生病卧床中……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值要够乱才好
一开始就可以设置篮子大小