STL之樹形結構的關聯式容器

2021-09-26 09:06:38 字數 2050 閱讀 9259

stl中有很多的容器比如說序列是容器和關聯式容器,經常見到的容器有這些:vector,list,deque,forward_lise等,這幾個容器通常稱為序列式容器,因為其底層為線性序列的資料結構,裡面儲存的是元素本身。

什麼是關聯是容器?

關聯式容器也是用來儲存資料的,與序列式容器不同的是,其裡面儲存的是結構的鍵值對,在資料檢索的時候比序列式容器效率更高。

鍵值對:用來表示具有一一對應關係的一種結構,該結構中一般只包含兩個成員變數key和value,key代表鍵值,value代表與之相對應的資訊。

樹形結構關聯式容器主要有四種:map,set,multimap,multiset,但常用的只有map,和set兩種。

其共同點是:使用平衡搜尋樹(即紅黑樹)作為其底層結構,容器中的元素是乙個有序的序列。

map的簡介:

1. map是關聯容器,它按照特定的次序(按照key來比較)儲存由鍵值key和值value組合而成的元素。

2. 在map

中,鍵值

key通常用於排序和惟一地標識元素,而值

value

中儲存與此鍵值

key關聯的內容。鍵值

key和值value

的型別可能不同,並且在

map的內部,

key與

value

通過成員型別

value_type

繫結在一起,

為其取別名稱為

pair:

typedef pair value_type;

3. 在內部,

map中的元素總是按照鍵值

key進行比較排序的。

4. map

中通過鍵值訪問單個元素的速度通常比

unordered_map

容器慢,但

map允許根據順序對元素進行

直接迭代(即對

map中的元素進行迭代時,可以得到乙個有序的序列)。

5. map

支援下標訪問符,即在

中放入key

,就可以找到與

key對應的

value。

6. map

通常被實現為二叉搜尋樹

(更準確的說:平衡二叉搜尋樹

(紅黑樹))。

map的總結:

1. map

中的的元素是鍵值對

2. map

中的key

是唯一的,並且不能修改

3. 預設按照小於的方式對

key進行比較

4. map

中的元素如果用迭代器去遍歷,可以得到乙個有序的序列

5. map

的底層為平衡搜尋樹

(紅黑樹

),查詢效率比較高

6. 支援

操作符,

operator

中實際進行插入查詢。

set的簡介:

1. set

是按照一定次序儲存元素的容器

2. 在set

中,元素的

value

也標識它

(value

就是key

,型別為

t),並且每個

value

必須是唯一的。

set中的元素

不能在容器中修改

(元素總是

const)

,但是可以從容器中插入或刪除它們。

3. 在內部,

set中的元素總是按照其內部比較物件

(型別比較

)所指示的特定嚴格弱排序準則進行排序。

4. set

容器通過

key訪問單個元素的速度通常比

unordered_set

容器慢,但它們允許根據順序對子集進行直

接迭代。

5. set

在底層是用二叉搜尋樹

(紅黑樹

)實現的。

STL之關聯式容器

sets 沒有重疊的數字,沒有權利指定新元素的位置 set typedef std set obj obj col col.insert 3 col.insert 1 col.insert 5 col.insert 4 col.insert 1 col.insert 6 col.insert 2 f...

STL之關聯式容器

在接觸容器初,我們學習了stl中的部分容器,如 vector,list,deque 等,這些容器統一稱為序列式容器。因為其底層為線性序列的的資料結構,裡面儲存的是元素本身。關聯式容器就有所不同 關聯式容器也是用來儲存與序列式容器不同的是,裡面儲存的是結構的鍵值對,在資料檢索時比序列式容器效率更高。用...

STL之關聯式容器set map

1.管理元素集合的stl容器大致分為兩類,序列式容器 有順序的集合 和關聯式容器 經過排序的集合 2.關聯式容器再管理資料的過程中會自動給元素排序。其優點在於可以隨時採用二分搜尋法,搜尋元素的效率極高。1.set是根據元素值進行排序的集合,所插入的元素在集合中唯一,不存在重複元素。1.include...