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 }