c++set集合的使用
阿新 • • 發佈:2017-07-07
font namespace mage find rbegin oat 部分 自己 ras
最後一個自由支配的暑假,學一些自己感興趣的部分,也算為大三作準備。
C++中set集合的使用
定義一個int類型的集合
set<int> s;
set<int>::iterator it;
基本操作有如下:
s.inert(10);//插入元素10
s.erase(10);//刪除元素10
s.clear();//清空集合
s.size();//集合元素的個數
s.empty();//判斷集合是否為空
it=s.find(10);//查找集合中是否有元素10,有的話返回10,沒有返回s.end();
首先集合在數學的概念中就是互異性,不能有重復
需要註意的點:
1.是以中序遍歷去遍歷整個集合的,在插入的時候自動調整
2.遍歷的時候需要判斷一下集合是否為空;
3.插入的數默認從小到大排序 set<int>::iterator it;
4.如果要從大到小的話 set<int>::reverse_iterator rit;
for(rit=s.rbegin();rit!=s.rend();rit++)
{
cout<<*rit<<" ";
}
自定義比較函數,用到結構體
1 #include<set>
2
3 #include<string >
4
5 #include<iostream>
6
7 using namespace std;
8
9
10
11 struct Info
12
13 {
14
15 string name;
16
17 float score;
18
19 //重載 ‘<‘操作符
20
21 bool operator < (const Info &a)const
22
23 {
24
25 //按照score從小到大排序 換為‘<’則為從大到小
26
27 return a.score>score;
28
29 }
30
31 };
32
33 int main()
34
35 {
36
37 set<Info> s;
38
39 Info info;
40
41
42
43 info.name="Jack";
44
45 info.score=99;
46
47 s.insert(info);
48
49
50
51 info.name="Tom";
52
53 info.score=56;
54
55 s.insert(info);
56
57
58
59 info.name="Nacy";
60
61 info.score=85;
62
63 s.insert(info);
64
65
66
67 info.name="Elano";
68
69 info.score=100;
70
71 s.insert(info);
72
73
74
75 set<Info>::iterator it;
76
77 for(it=s.begin();it!=s.end();it++)
78
79 cout<<(*it).name<<" : "<<(*it).score<<endl;
80
81 return 0;
82
83
84
85 }
結果:
c++set集合的使用