C set集合模型操練

2021-10-02 19:16:59 字數 3031 閱讀 2770

set是乙個集合容器,其中所包含的元素是唯一的,集合中的元素按一定順序排列

元素插入過程是按排序規則插入,故不可指定位置插入

set採用紅黑樹變體的資料結構實現,紅黑樹屬於平衡二叉樹。在插入刪除操作上比vector快

set不能直接訪問元素(即,不可使用和*.at())

multiset與set的區別:set支援唯一鍵值,每個元素只出現一次;multiset同一值可出現多次

不可直接修改set和multiset中的元素值,因為該容器是自動排序的。要想修改乙個元素,必須先刪除它,再插入新的元素

#define _crt_secure_no_warnings

#include

#include

#include

using

namespace std;

/* set是乙個集合容器,其中所包含的元素是唯一的,集合中的元素按一定順序排列

元素插入過程是按排序規則插入,故不可指定位置插入

set採用紅黑樹變體的資料結構實現,紅黑樹屬於平衡二叉樹。在插入刪除操作上比vector快

set不能直接訪問元素(即,不可使用和*.at())

multiset與set的區別:set支援唯一鍵值,每個元素只出現一次;multiset同一值可出現多次

不可直接修改set和multiset中的元素值,因為該容器是自動排序的。要想修改乙個元素,必須先刪除它,再插入新的元素

*/class

student

public

: string name;

int age;};

struct funcstudent};

intmain()

set1.

insert(5

);set1.

insert

(100);

set1.

insert

(100);

for(set<

int>

::iterator it = set1.

begin()

; it != set1.

end(

); it++

) cout << endl;

//5 100 6334 11478 15724 18467 19169

//刪除集合

while

(!set1.

empty()

) cout << endl << endl;

set<

int, greater<

int>> set2;

for(

int i =

0; i <

5; i++

)//從大到小排序

for(set<

int, greater<

int>>

::iterator it = set2.

begin()

; it != set2.

end(

); it++

) cout << endl;

//2 自定義資料型別的比較 ===>仿函式 函式物件

student s1

("s1",31

);student s2

("s2",32

);student s3

("s3",22

);student s4

("s4",44

);set sets1;

sets1.

insert

(s1)

; sets1.

insert

(s2)

; sets1.

insert

(s3)

; sets1.

insert

(s4)

;//遍歷

for(set

::iterator it = sets1.

begin()

; it != sets1.

end(

); it++

) set<

int> set3;

for(

int i =

0; i <

10; i++

) set<

int>

::iterator it0 = set3.

find(5

);cout <<

"*it0: "

<<

*it0 << endl;

int num1 = set3.

count(5

);cout <<

"num1: "

<< num1 << endl;

set<

int>

::iterator it1 = set3.

lower_bound(5

);cout <<

"*it1: "

<<

*it1 << endl;

set<

int>

::iterator it2 = set3.

lower_bound(5

);cout <<

"*it2: "

<<

*it2 << endl;

pairint>

::iterator, set<

int>

::iterator> mypair = set3.

equal_range(5

);set<

int>

::iterator it3 = mypair.first;

cout <<

"*it3: "

<<

*it3 << endl;

//5 //6

set<

int>

::iterator it4 = mypair.second;

cout <<

"*it4: "

<<

*it4 << endl;

//6 //6

return0;

}

c set集合的使用方法詳解

set集合是c stl庫中自帶的乙個容器,set具有以下兩個特點 1 set中的元素都是排好序的 2 set集合中沒有重複的元素 常用操作 begin 返回set容器的第乙個元素的位址 end 返回set容器的最後乙個元素位址 clear 刪除set容器中的所有的元素 empty 判斷set容器是否...

c set集合的使用方法詳解

set集合是c stl庫中自帶的乙個容器,set具有以下兩個特點 1 set中的元素都是排好序的 2 set集合中沒有重複的元素 常用操作 begin 返回set容器的第乙個元素的位址 end 返回set容器的最後乙個元素位址 clear 刪除set容器中的所有的元素 empty 判斷set容器是否...

C 物件模型系列集合

文章 指標和引用 指標與陣列 指標與字串 堆疊與函式呼叫 sizeof與物件記憶體布局 單繼承與虛函式表 多重繼承與虛函式表 虛繼承與虛函式表 型別轉化 參考 1 c 物件模型 c 物件模型筆記 c 物件記憶體布局1 c 物件記憶體布局1 c 虛函式表解析 位元組對齊1 位元組對齊2 位元組對齊3 ...