C STL學習 Set集合

2021-09-02 19:37:30 字數 3210 閱讀 1901

set<

int> setlnt;

//乙個存放int的容器

set<

float

> setfloat;

//乙個存放float的容器

set setstring;

//乙個存放string的容器

insert

(a);

//在容器中插入元素

begin()

;//返回容器中第乙個資料的迭代器

end();

//返回容器中最後乙個資料之後的迭代器

rend()

;//返回容器中倒數最後乙個元素的後面的迭代器。

rbegin()

;返回容器中倒數第乙個元素的迭代器。

set預設按公升序排序,如果想降序排序,可以:

set<

int,greater<

int>

> setint1;

//按降序排序,注意最後`> >`中間有乙個空格

set<

int,less<

int>

> setint2;

//按公升序排序

erase

(value)

;//刪除容器中值為value的元素

erase

(it)

;//刪除it迭代器所指的元素,返回下乙個元素的迭代器

erase

(beg,end)

;//刪除區間[beg,end)的所有元素,返回下乙個元素的迭代器

find

(value)

;//在容器中查詢值等於value的值,並返回指向value的迭代器

#include

#include

#include

using namespace std;

intmain()

;int j=0;

while

(i<

sizeof

(a)/

sizeof

(int))

//陣列a插入到set集合中

//迭代器輸出集合中的元素

for(set<

int>

::iterator it=s.

begin()

;it!=s.

end(

);it++

) cout

int>

::iterator i=s.

find(3

);//查詢值為3的元素,並返回對應的迭代器

if(i!=s.

end())

//如果查詢成功,則刪除

s.erase

(i);

//再次輸出集合中的元素

for(set<

int>

::iterator it = s.

begin()

; it != s.

end(

); it++

) cout

s.erase(2

);//刪除集合中值為2的元素

for(set<

int>

::iterator it = s.

begin()

; it != s.

end(

); it++

) cout

(s.begin()

,s.end()

);//刪除集合從頭到尾之間的元素

cout

return0;

}

equal_range()

;//返回集合中與給定值相等的上下限的兩個迭代器,上限是閉區間,下限是開區間,如[beg,end)。這兩個迭代器,封裝在pair中。

#include

#include

#include

using namespace std;

intmain()

;int j=0;

while

(j<

sizeof

(a)/

sizeof

(int))

for(set<

int>

::iterator it=s.

begin()

;it!=s.

end(

);it++

) cout

::iterator,set<

int>

::iterator> pa=s.

equal_range(3

);set<

int>

::iterator be=pa.first;

set<

int>

::iterator en=pa.second;

cout<<

*be<<

" "<<

*en

return0;

}

set也可以對自定義型別進行排序

例如:對乙個(姓名,年齡)自定義型別按照年齡從小到大排序

#include

#include

#include

using namespace std;

struct st

}p[5];

intmain()

for(set

::iterator it=s.

begin()

;it!=s.

end(

);it++

)return0;

}

clear()

;//清除所有元素

count()

;//返回某個值元素的個數(因為set容器中,元素不重複,所有只有0或1值,也即判斷容器中是否存在某元素)

empty()

;//判斷容器是否為空

size()

;//返回容器內元素的個數

swap()

;//交換兩個容器的元素

C STL之Set集合容器

set集合容器實現了紅黑樹的平衡二叉樹的資料結構,在插入元素時候,它會自動的進行調整二叉樹的排列,把該元素放到適當的位置,以保證每個子樹根節點的鍵值大於左子樹所有的鍵值,小於右子樹所有節點的鍵值 另外,還要確保根節點左子樹的高度與右子樹的高度相等,這樣,二叉樹的高度最小,從而達到檢索的速度最快 注意...

C STL之set集合容器

set集合容器 set集合容器實現了紅黑樹 red black tree 的平衡二叉檢索樹的資料結構,在 插入元素時,它會自動調整二叉樹的排列,把該元素放到適當的位置,以確保每個子樹根節點的鍵值大於左子樹的所有節點的鍵值,而小於右子樹所有節點的鍵值 另外,還得確保根節點左子樹的高度與右子樹的高度相等...

c STL庫容器之集合set

set是stl中一種標準關聯容器,其鍵值就是實值,實值就是鍵值,不可以有重複,所以我們不能通過set的迭代器來改變set的元素的值。它底層使用平衡的搜尋樹 紅黑樹實現,插入刪除操作時僅僅需要指標操作節點即可完成,不涉及到記憶體移動和拷貝,所以效率比較高。set,顧名思義是 集合 的意思,在set中元...