16.8.2【set容器的大小和交换、插入和删除、查找和统计】

  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 }

 

posted @ 2021-05-12 11:14  yub4by  阅读(121)  评论(0编辑  收藏  举报