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

分段串接
deque的iterator

map 實(shí)際是一個 vector,里面是指針
iterator 里面四部分 cur、first、last、node
first 和 last 是每一段里的首尾
deque<T>::insert()

deque 如何模擬連續(xù)空間

容器 queue

容器 Stack

queue和stack,關(guān)于其iterator和底層結(jié)構(gòu)

- queue和stack都可以選擇list或deque作為底層結(jié)構(gòu)。
- queue不能選擇vector作為底層結(jié)構(gòu),而stack可以。
- queue和stack都不能選擇set或map作為底層結(jié)構(gòu)
容器 rb_tree
Red-Black tree(紅黑樹)是平衡二元搜索樹(balanced binary search tree)中常被使用的一種。平衡二元搜索樹的特征是:排列規(guī)則有利search和insert,并保持平衡——無任何節(jié)點(diǎn)過深。
rb_tree提供“遍歷”操作及iterators。按正常規(guī)則(++ite)遍歷,便能獲得排序狀態(tài)(sorted)。
我們不應(yīng)使用rb_tree的iterators改變元素值(因為元素有其嚴(yán)謹(jǐn)排列規(guī)則)。編程層面(programming level)并未阻絕此事。如此設(shè)計是正確的,因為rb_tree即將為set和map服務(wù)(作為其底部支持),而map允許元素的data被改變,只有元素的key才是不可被改變的。
rb_tree提供兩種insertion操作:insert_unique()和insert_equal()。前者表示節(jié)點(diǎn)的key一定在整個tree中獨(dú)一無二,否則插入失敗;后者表示節(jié)點(diǎn)的key可以重復(fù)。

容器 _Rb_tree

handle and body
手法和本體分開
容器set,multiset


set的所有操作,都轉(zhuǎn)呼叫底層t的操作。從這層意義看,set未嘗不是個container adapter。
容器map,multimap


容器map,獨(dú)特的operator[]

容器 hashtable

Separate Chaining
分開-串聯(lián)
鏈表太長要打散,bucket籃子過長
元素個數(shù)比籃子個數(shù)還多,就要打散
打散的方式就是把籃子增加兩倍

hash_function,hash-code
hashcode值要夠亂才好
一開始就可以設(shè)置籃子大小
unordered 容器
