C 中常見stl關聯容器的比較

2021-09-21 02:20:53 字數 481 閱讀 9627

c++11標準庫中主要介紹了以下8種關聯容器,其區別如下:

實現:平衡二叉樹。

優點:自動排序使得查詢有良好效能。

缺點:不能直接改變元素值,改變樹則亂。

set與multiset的區別:前者每乙個元素只能出現一次,不允許重複;後者元素可以重複。

實現:平衡二叉樹。

優點:自動以key值大小排序使得查詢有良好效能。

缺點:不能直接改變key值,改變樹則亂。

map與multimap的區別:前者每乙個key元素只能出現一次,不允許重複;後者key值可以重複。

實現:給定乙個hash函式以hash table資料結構實現(內部實則是乙個鍊錶)。

優點:有助於快速訪問

缺點:沒有明確的排序,每乙個都是隨機的

實現:給定乙個hash函式以hash table資料結構實現(內部實則是乙個鍊錶

優點:有助於快速訪問

缺點:沒有明確的排序,每乙個都是隨機的

C 之STL中常用關聯容器使用方法

在stl中常用的關聯容器有set和map,其他multiset和multimap是這兩個容器的擴充套件,區別就是打破了鍵值得唯一性,而在set和map中鍵值是唯一的,即使插入兩個相同鍵的資料,在容器中也只保留乙個。set容器內部只有鍵值而沒有實值 我也不知道為什麼還能稱之為關聯容器 而map裡存放著...

STL容器的效率比較

順序儲存容器 string vector list deque 關聯儲存容器 map底層採用的是樹型結構,多數使用平衡二叉樹實現,查詢某一值是常數時間,遍歷起來效果也不錯,只是每次插入值的時候,會重新構成底層的平衡二叉樹,效率有一定影響.set 和map都是無序的儲存元素,只能通過它提供的介面對裡面...

STL幾個容器的比較

vector 連續記憶體,隨機訪問資料成員快,但是頻繁的插入 需要移動要插入的元素的後面的所有元素 或者擴容 vector擴容後會清掉原來的資料,拷貝到新的申請的大的記憶體中去,特別是有比較複雜的類的時候會呼叫構造和析構函式極大影響效能 的操作會影響效能。vector的另乙個常見的問題就是clear...