set 집합 용기 (자주 사용 하 는 방법 요약)
set 집합 용 기 를 구성 하 는 목적 은 무 거 운 + 정렬 + 빠 른 검색 을 위 한 것 입 니 다.set 집합 용 기 는 빨 간 검 은 나무 가 많은 균형 이 진 트 리 의 데이터 구 조 를 실현 하기 때문에 삽입 하거나 삭제 할 때 이 진 트 리 를 자동 으로 조정 하여 이 진 트 리 가 항상 새로운 균형 을 유지 할 수 있 습 니 다.set 를 제외 하고 multiset, map, multimap 의 내부 구조 도 균형 이 잡 힌 이 진 트 리 입 니 다.
1 /* C++STL set , , 。
2 set , , ,
3 。
4 */
5 #include <set>// , multiset
6 #include
7 using namespace std;
8
9 // myComp, "()"
10 struct myComp{
11 bool operator () (const int &a,const int &b){
12 return a>b;//
13 }
14 };
15
16 //
17 struct STUDENT{
18 string name;
19 double score;
20
21 // "
22 bool operator < (const STUDENT &a) const{
23 // score 。 , ">"
24 return a.score < score;
25 }
26 };
27
28 void print(set<int> s);
29 void rprint(set<int> s);
30
31 int main()
32 {
33 /* set , set */
34 set<int> s;// int s,
35
36 /* ( )*/
37 // , , set
38 //
39 s.insert(8);// 8,
40 s.insert(1);
41 s.insert(6);
42 s.insert(12);
43 s.insert(8);// 8, , ,
44
45 //
46 set<int>::iterator it;//
47 for(it=s.begin(); it != s.end(); it++){
48 cout<' ';
49 }
50 cout<<endl;
51 /*
52 1 6 8 12
53 */
54 //
55 set<int>::reverse_iterator rit;
56 for(rit=s.rbegin(); rit != s.rend();rit++){
57 cout<' ';
58 }
59 cout<<endl;
60 /*
61 12 8 6 1
62 */
63
64 /* , find() , ,
65 , , end()*/
66 set<int>::iterator it1;// find()
67 it1=s.find(12);
68 if(it1 != s.end())
69 cout<<" "<"
";
70 it1=s.find(2);
71 if(it1 == s.end())
72 cout<<" 1
";
73 /*
74 12
75 1
76 */
77
78 /* */
79 // , erase()
80 cout<<" :
";
81 print(s);
82 s.erase(6);// 6
83 cout<<" :
";
84 print(s);
85 /*
86 :
87 1 6 8 12
88 :
89 1 8 12
90 */
91
92 //
93 cout<<" :
";
94 print(s);
95 s.clear();
96 cout<<" :
";
97 print(s);
98 /*
99 :
100 1 8 12
101 :
102
103 */
104
105 /* insert() , 。
106 , */
107
108 /* */
109 // , main
110 set<int,myComp> ss;
111 ss.insert(8);// , ,
112 ss.insert(1);
113 ss.insert(12);
114 ss.insert(6);
115
116 set<int,myComp>::iterator it2;//
117 for(it2=ss.begin(); it2 != ss.end(); it2++){
118 cout<' ';
119 }
120 cout<<endl;
121 /*
122 12 8 6 1
123 */
124
125 // , , main
126 set students;
127 STUDENT someone;
128 someone.name="Jack";
129 someone.score=80.5;
130 students.insert(someone);
131
132 someone.name="Tomi";
133 someone.score=57.5;
134 students.insert(someone);
135
136 someone.name="Nacy";
137 someone.score=60.5;
138 students.insert(someone);
139
140 set::iterator it3;//
141 for(it3=students.begin(); it3 != students.end();it3 ++){
142 cout<":"<endl;
143 }
144 /*
145 Jack:80.5
146 Nacy:60.5
147 Tomi:57.5
148 */
149 return 0;
150 }
151
152 void print(set<int> s)
153 {
154 set<int>::iterator it;//
155 for(it=s.begin(); it != s.end(); it++){
156 cout<' ';
157 }
158 cout<<endl;
159 }
160
161 void rprint(set<int> s)
162 {
163 set<int>::reverse_iterator rit;//
164 for(rit=s.rbegin(); rit != s.rend();rit++){
165 cout<' ';
166 }
167 cout<<endl;
168 }
다음으로 전송:https://www.cnblogs.com/wenzhixin/p/8508549.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.