set與map和pair容器

2021-06-22 21:35:07 字數 1778 閱讀 3230

set

與map

和pair容器

首先來看看

set集合容器:

set集合容器實現了紅黑樹的平衡二叉樹資料結構,在插入元素時它會自動調整二叉樹的排列,把該元素放到適當的位置,並且保證左右子樹平衡。平衡二叉檢索樹採用中序遍歷演算法。

對於set,

vector

,map

等等,它們的

前向迭代器

定義是這樣的(以

set為例):

set::iterator it;

for(it=s.begin();it!=s.end();it++){}

那麼反向迭代器呢?

set::reverse_iterator rit;

for(rit=s.rbegin();rit!=s.rend();rit++){}

常用方法:

insert(),erase(),find(),clear()

find()

方法是查詢元素方法,如果找到就返回該元素迭代器的位置,否則就返回最後乙個元素後面的乙個位置。

這樣來使用:

it=s.find(5);

if(it!=s.end()) {}

else {}

關於比較函式:

如果元素不是結構體,而是基本資料型別,那麼就自己定義乙個比較函式:

struct cmp 

}; 

int main() 

如果元素是結構體,那麼比較函式直接可以寫在結構體裡面。

sets; 

struct student

};

對於set容器來說,它不能有關鍵字相同的元素同時存在,如果要保留相同的元素,就用

multiset

多重集合容器。

其基本操作跟

set集合容器差不多一樣。定義方法是:

multisetms;

map映照容器:

map映照容器的元素資料是由乙個鍵值和乙個映照資料組成的,鍵值與映照資料之間具有一一對應關係。

map也是用紅黑樹實現的。

同set

一樣,map

不允許插入元素鍵值相同,而

multimap

多重應照集合可以允許鍵值重複。

使用方法:

int main()

主要方法有:

insert(),clear(),erase(),find()

等等,基本跟

set一樣。對於

multimap

使用方法跟

map差不多一樣。

std::pair

主要的作用是將兩個資料組合成乙個資料,兩個資料可以是同一型別或者不同型別。

例如std::pair

或者std::pair

等。pair

實質上是乙個結構體,其主要的兩個成員變數是

first

和second

,這兩個變數可以直接使用。初始化乙個

pair

可以使用建構函式,也可以使用

std::make_pair

函式。

make_pair

函式的定義如下:

template pair make_pair(t1 a, t2 b)

所以m.insert(pair("luce",88.5)); 與

m.insert(make_pair("luce",88.5));

是同樣的效果。

示例:int main() 

set容器 map容器

簡介 本質 set和multiset區別 構造 賦值 include void printset set int s cout endl 構造和賦值 void test01 intmain 總結 函式原型 include void printset set int s cout endl 大小 vo...

C 關聯容器的使用set與map

一 在c 中類似vector封裝陣列,string封裝字元,list封裝了鍊錶,map與set則封裝了二叉樹。其中set與map封裝的二叉樹則是採用的紅黑樹的底層結構的,這種結構與一般的二叉樹的型別有所不同,這種結構的二叉樹更加平衡高效檢索的二叉樹,對存入的資料進行了排序化的儲存。二 1 為什麼ma...

c 中關聯容器map與set總結

1.set set分為兩種 unordered set和set其中unordered set中的元素儲存是無序的,set中的元素儲存是由序的。兩種set中每個元素只存有乙個key,它支援高效的關鍵字查詢操作。set對應數學中的 集合。set具有以下的特點 儲存同一型別的資料元素 這點和vector ...