C 高階 樹形結構的關聯式容器

2021-10-05 19:29:22 字數 2069 閱讀 5626

1.關聯式容器

stl 中vector、list、deque等這些容器稱為序列式容器,因為其底層為線性序列的資料結構,裡面儲存元素本身。關聯式容器也用來儲存資料,但是與序列式容器不同的是,裡面儲存的是結構的鍵值對,在資料檢索時比序列式容器效率更高

2.鍵值對

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

定義:

template

<

classt1,

class

t2>

struct pair

pair

(const t1& a,

const t2& b)

:first

(a),

second

(b)}

;

3.樹形結構的關聯式容器根據應用場景不同,stl實現了兩種不同結構的關聯式容器:樹形結構與雜湊結構。樹形結構的關聯式容器:map、set、multimap、multiset。這四種容器的共同點是:使用平衡搜尋樹(紅黑樹)作為其底層結構,容器中的元素是乙個有序的序列

map中的元素是鍵值對,key是唯一的且不能修改,預設按照小於的方式對key進行比較,map中的元素如果用迭代器遍歷,則可以得到乙個有序的序列。map的的層為平衡搜尋樹(紅黑樹),查詢效率高,支援操作符,operator中實際進行插入查詢

multimap

#include

#include

#include

using

namespace std;

intmain()

return0;

}

set

#include

#include

using

namespace std;

intmain()

; set<

int>

s(arr, arr +

sizeof

(arr)

/sizeof

(int))

; s.

insert(6

);s.insert(0

);s.erase(3

);s.erase(4

);for(

auto x : s)

cout << endl;

for(

auto it = s.

rbegin()

; it != s.

rend()

; it++

)return0;

}

multiset

#include

#include

#include

using

namespace std;

intmain()

; multiset<

int>

m(v.

begin()

, v.

end())

;for

(auto x : m)

return0;

}

C 關聯式容器(上) 樹形結構

關聯式容器也是用來儲存資料的,與序列式容器不同的是,其裡面儲存的是結構的鍵值對,在 資料檢索時比序列式容器效率更高。鍵值對 用來表示具有一一對應關係的一種結構,該結構中一般只包含兩個成員變數key和value,key代表鍵值,value表示與key對應的資訊。比如 現在要建立乙個英漢互譯的字典,那該...

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

stl中有很多的容器比如說序列是容器和關聯式容器,經常見到的容器有這些 vector,list,deque,forward lise等,這幾個容器通常稱為序列式容器,因為其底層為線性序列的資料結構,裡面儲存的是元素本身。什麼是關聯是容器?關聯式容器也是用來儲存資料的,與序列式容器不同的是,其裡面儲存...

C 容器 關聯式容器

由於multimap和map相差不大,所以基本以map做練習 集合 map 是一種包含已 排序 公升序 物件的關聯 容器。map multimap會根據待定的排序準則,自動將元素排序。兩者不同在於前者不允許元素重複,而後者允許。集合元素的第乙個引數是key,第二個元素當做value,元素的順序與ke...