1 #include<iostream>
2 #include<cstdlib>
3 using namespace std;
4 #include<set>
5
6
7 /*
8 3.8.3 set容器大小和交换
9
10 size(); //返回容器中元素的数目
11 empty(); //判断容器是否为空
12 swap(st); //交换两个集合容器
13
14 3.8.4 set容器插入和删除
15
16 insert(elem); //在容器中插入元素。
17 clear(); //清除所有元素。
18 erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。
19 erase(beg, end); //删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
20 erase(elem); //删除容器中值为elem的元素。
21
22 3.8.5 set容器查找和统计
23
24 find(key); //查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end()
25 count(key); //统计key的元素个数
26 */
27
28
29 print_set(const set<int> & s)
30 {
31 for(set<int>::const_iterator cit=s.begin(); cit!=s.end(); cit++)
32 {
33 cout << *cit << " ";
34 }
35 cout << endl;
36 }
37
38
39 void test383()
40 {
41 set<int> s1;
42 s1.insert(10);
43 s1.insert(40);
44 s1.insert(20);
45 s1.insert(30);
46 print_set(s1);
47
48 if(s1.empty())
49 {
50 cout << "s1 is null" << endl;
51 }
52 else
53 {
54 cout << "s1 not null" << endl;
55 cout << "s1 size:" << s1.size() << endl;
56 }
57
58 set<int> s2;
59 s2.insert(100);
60 s2.insert(400);
61 s2.insert(200);
62 s2.insert(300);
63
64 cout << "交换前:" << endl;
65 print_set(s1);
66 print_set(s2);
67
68 s1.swap(s2);
69
70 cout << "交换后:" << endl;
71 print_set(s1);
72 print_set(s2);
73
74 //注意set容器不支持resize
75 }
76
77
78 void test384()
79 {
80 set<int> s1;
81 s1.insert(10);
82 s1.insert(40);
83 s1.insert(20);
84 s1.insert(30);
85 print_set(s1);
86
87 s1.erase(s1.begin());
88 print_set(s1);
89
90 s1.erase(30);
91 print_set(s1);
92
93 s1.clear(); //效果同s1.erase(s1.begin(), s1.end());
94 print_set(s1);
95 }
96
97
98 void test385()
99 {
100 set<int> s1;
101 s1.insert(10);
102 s1.insert(40);
103 s1.insert(20);
104 s1.insert(30);
105
106 set<int>::iterator pos = s1.find(30);
107 if(pos != s1.end())
108 {
109 cout << "找到元素:" << *pos << endl;
110 }
111 else
112 {
113 cout << "未找到元素" << endl;
114 }
115
116 int num = s1.count(30);
117 cout << "num of 30 in s1: " << num << endl;
118 //对于set而言,count统计结果只能是0或1
119 }
120
121
122 int main()
123 {
124 test383();
125 cout << endl;
126 test384();
127 cout << endl;
128 test385();
129
130 system("pause");
131 return 0;
132 }
