1. 程式人生 > >STL學習筆記——關聯式容器(二級容器)

STL學習筆記——關聯式容器(二級容器)

1.RB-tree(二叉平衡搜尋樹,有自動排序功能)
2.set
    1)所有的元素都會根據元素的鍵值自動被排序(預設升序),set元素的鍵值就是實值,set不允許兩個元素有相同的鍵值;
    2)set的迭代器為只讀迭代器,set不允許通過迭代器修改元素值,鍵值無法被修改;
    3)由於set底層由RB-tree實現,迭代器相當於指向結點的指標,增刪元素時記憶體並沒有發生“改變”(元素移動),因此指向記憶體的指標不會失效。所以在客戶對它進行增刪操作前後,所有的迭代器都不會失效,被刪除元素的迭代器除外;
    4)對於關聯式容器應該使用其自身的find函式來搜尋元素,比STL演算法find更有效率

3.map          
    1)所有的元素都會根據元素的鍵值自動被排序(預設升序);map的所有元素都是pair,同時擁有鍵值和實值;
           map不允許兩個元素有相同的鍵值;
    2)map允許通過迭代器修改元素值,但鍵值無法被修改(會影響元素的排列規則);
    3)由於map底層由RB-tree實現,迭代器相當於指向結點的指標,增刪元素時記憶體並沒有發生“改變”(元素移動),因此指向記憶體的指標不會失效。所以在客戶對它進行增刪操作前後,所有的迭代器都不會失效,被刪除元素的迭代器除外;
    4)對於關聯式容器應該使用其自身的find函式來搜尋元素,比STL演算法find更有效率。
4.multiset
允許元素的鍵值重複
5.multimap允許元素的鍵值重複
6.hashtable無自動排序功能
    1)SGI-STL的hashtable使用開鏈法來解決衝突,採用雜湊桶結構來儲存結點,由vector<node*>和list-node組成
    2)hashtable的迭代器型別為forwarditerator,沒有後退操作;