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,因為這兩種線性表本來就不支持數(shù)據(jù)的查找和遍歷映砖。queque不可以選擇vector作為底層支持真慢,因為vector移除前面的數(shù)據(jù)效率很低,沒有提供函數(shù)接口pop_front.
-----------------------------------------------------------------------------------------------------
rb_tree:https://zh.wikipedia.org/wiki/%E7%BA%A2%E9%BB%91%E6%A0%91
紅黑樹是一種變相的2-4 樹榕吼,即一種變異B-樹饿序,一種寬松的平衡二叉樹,插入元素時即保證排序友题,樹的高度也不會超過黑高度的兩倍(每一分支的黑節(jié)點樹木相同嗤堰,且紅節(jié)點不相鄰)。樹的操作最繁瑣的是插入和刪除度宦,紅黑樹的插入和刪除只涉及局部的旋轉(zhuǎn)和染色踢匣,不會打破樹的整體結(jié)構(gòu)。
set,multiset,map ,multimap是基于rb_tree的適配器戈抄。我們無法使用它們的iterator修改紅黑樹的節(jié)點离唬,否則樹會重新排序。
適配器:通過引用底層容器的“typedef”來封裝自己划鸽,或者繼承底層容器输莺,單只公開部分接口(參考課件標準庫.pdf的Page133)。
----------------------------------------------------------------------------------------------------------
hashtable:https://zh.wikipedia.org/wiki/%E5%93%88%E5%B8%8C%E8%A1%A8
unordered_set,unorder_map的底層結(jié)構(gòu)裸诽,典型的空間換時間嫂用。