生病臥床中……OTL
deque&queue 和 stack 深度探索上
容器 deque
分段串接
deque的iterator
map 實際是一個 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é)點過深叫榕。
rb_tree提供“遍歷”操作及iterators浑侥。按正常規(guī)則(++ite)遍歷,便能獲得排序狀態(tài)(sorted)晰绎。
我們不應(yīng)使用rb_tree的iterators改變元素值(因為元素有其嚴謹排列規(guī)則)寓落。編程層面(programming level)并未阻絕此事。如此設(shè)計是正確的荞下,因為rb_tree即將為set和map服務(wù)(作為其底部支持)伶选,而map允許元素的data被改變,只有元素的key才是不可被改變的尖昏。
rb_tree提供兩種insertion操作:insert_unique()
和insert_equal()
仰税。前者表示節(jié)點的key一定在整個tree中獨一無二,否則插入失敾嵯堋肖卧;后者表示節(jié)點的key可以重復(fù)。
容器 _Rb_tree
handle and body
手法和本體分開
容器set掸鹅,multiset
set的所有操作,都轉(zhuǎn)呼叫底層t的操作巍沙。從這層意義看葵姥,set未嘗不是個container adapter。
容器map句携,multimap
容器map,獨特的operator[]
容器 hashtable
Separate Chaining
分開-串聯(lián)
鏈表太長要打散削咆,bucket籃子過長
元素個數(shù)比籃子個數(shù)還多牍疏,就要打散
打散的方式就是把籃子增加兩倍
hash_function,hash-code
hashcode值要夠亂才好
一開始就可以設(shè)置籃子大小