deque:http://zh.cppreference.com/w/cpp/container/deque
deque是一種分段連續(xù)的數(shù)據(jù)結(jié)構(gòu),它的iterator可以跨段尋找。
stack,queue是一種適配器,可以將deque,list封裝成相應(yīng)的數(shù)據(jù)結(jié)構(gòu),stack和queue不提供iterator,因?yàn)檫@兩種線性表本來就不支持?jǐn)?shù)據(jù)的查找和遍歷。queque不可以選擇vector作為底層支持,因?yàn)関ector移除前面的數(shù)據(jù)效率很低,沒有提供函數(shù)接口pop_front.
-----------------------------------------------------------------------------------------------------
rb_tree:https://zh.wikipedia.org/wiki/%E7%BA%A2%E9%BB%91%E6%A0%91
紅黑樹是一種變相的2-4 樹,即一種變異B-樹,一種寬松的平衡二叉樹,插入元素時(shí)即保證排序,樹的高度也不會(huì)超過黑高度的兩倍(每一分支的黑節(jié)點(diǎn)樹木相同,且紅節(jié)點(diǎn)不相鄰)。樹的操作最繁瑣的是插入和刪除,紅黑樹的插入和刪除只涉及局部的旋轉(zhuǎn)和染色,不會(huì)打破樹的整體結(jié)構(gòu)。
set,multiset,map ,multimap是基于rb_tree的適配器。我們無法使用它們的iterator修改紅黑樹的節(jié)點(diǎn),否則樹會(huì)重新排序。
適配器:通過引用底層容器的“typedef”來封裝自己,或者繼承底層容器,單只公開部分接口(參考課件標(biāo)準(zhǔn)庫(kù).pdf的Page133)。
----------------------------------------------------------------------------------------------------------
hashtable:https://zh.wikipedia.org/wiki/%E5%93%88%E5%B8%8C%E8%A1%A8
unordered_set,unorder_map的底層結(jié)構(gòu),典型的空間換時(shí)間。