|
| 1 | +#include<iostream> |
| 2 | +#include<set> |
| 3 | +#include<list> |
| 4 | +#include<string> |
| 5 | +#include<vector> |
| 6 | +#include<map> |
| 7 | +using namespace std; |
| 8 | + |
| 9 | +//void print(set<int>::iterator begin,set<int>::iterator end) |
| 10 | +//{ |
| 11 | +// while (begin != end) |
| 12 | +// { |
| 13 | +// std::cout << *begin << " "; |
| 14 | +// begin++; |
| 15 | +// } |
| 16 | +// |
| 17 | +// std::cout << std::endl; |
| 18 | +//} |
| 19 | +// |
| 20 | +//int main() |
| 21 | +//{ |
| 22 | +// set<int> s1;//使用空构造构造一个空的set |
| 23 | +// |
| 24 | +// //向s1中插入元素,使s1不在为空 |
| 25 | +// s1.insert(5); |
| 26 | +// s1.insert(8); |
| 27 | +// s1.insert(6); |
| 28 | +// s1.insert(3); |
| 29 | +// s1.insert(9); |
| 30 | +// |
| 31 | +// print(s1.begin(), s1.end()); |
| 32 | +// |
| 33 | +// //使用拷贝构造构造一个和s1具有相同元素的set s2 |
| 34 | +// set<int> s2(s1); |
| 35 | +// print(s2.begin(),s2.end()); |
| 36 | +// |
| 37 | +// //使用迭代器区间构造构造一个和s1相同的set s3 |
| 38 | +// set<int> s3(s1.begin(),s1.end()); |
| 39 | +// print(s3.begin(), s3.end()); |
| 40 | +// |
| 41 | +// |
| 42 | +// //使用数组、vector迭代器区间构造set s4、s5 |
| 43 | +// int array[5] = {1,2,3,4,5}; |
| 44 | +// vector<int> v(array,array+5);//使用数组构造vector |
| 45 | +// |
| 46 | +// set<int> s4(array,array+5); |
| 47 | +// print(s4.begin(), s4.end()); |
| 48 | +// |
| 49 | +// set<int> s5(v.begin(),v.end()); |
| 50 | +// print(s5.begin(), s5.end()); |
| 51 | +// |
| 52 | +// |
| 53 | +// //使用list迭代器构造set |
| 54 | +// list<int> lt(array,array+5); |
| 55 | +// set<int> s6(lt.begin(),lt.end()); |
| 56 | +// print(s6.begin(), s6.end()); |
| 57 | +// |
| 58 | +// |
| 59 | +// //使用string迭代器构造 |
| 60 | +// string str = "abcd"; |
| 61 | +// |
| 62 | +// set<char> s7(str.begin(),str.end()); |
| 63 | +// auto it = s7.begin(); |
| 64 | +// while (it != s7.end()) |
| 65 | +// { |
| 66 | +// std::cout << *it << " "; |
| 67 | +// it++; |
| 68 | +// } |
| 69 | +// std::cout << std::endl; |
| 70 | +// return 0; |
| 71 | +//} |
| 72 | + |
| 73 | + |
| 74 | +//int main() |
| 75 | +//{ |
| 76 | +// set<int> s1; |
| 77 | +// s1.insert(5); |
| 78 | +// s1.insert(8); |
| 79 | +// s1.insert(6); |
| 80 | +// s1.insert(3); |
| 81 | +// s1.insert(9); |
| 82 | +// |
| 83 | +// //正向迭代器遍历 |
| 84 | +// set<int>::iterator it = s1.begin(); |
| 85 | +// while (it != s1.end()) |
| 86 | +// { |
| 87 | +// cout << *it << " "; |
| 88 | +// it++; |
| 89 | +// } |
| 90 | +// cout << endl; |
| 91 | +// //反向迭代器遍历 |
| 92 | +// set<int>::reverse_iterator rit = s1.rbegin(); |
| 93 | +// while (rit != s1.rend()) |
| 94 | +// { |
| 95 | +// cout << *rit << " "; |
| 96 | +// rit++; |
| 97 | +// } |
| 98 | +// cout << endl; |
| 99 | +// return 0; |
| 100 | +//} |
| 101 | + |
| 102 | +//int main() |
| 103 | +//{ |
| 104 | +// set<int> s1; |
| 105 | +// s1.insert(5); |
| 106 | +// s1.insert(8); |
| 107 | +// s1.insert(6); |
| 108 | +// s1.insert(3); |
| 109 | +// s1.insert(9); |
| 110 | +// |
| 111 | +// cout << s1.size() << " " << s1.max_size() << endl; |
| 112 | +// |
| 113 | +// string str = "abcde"; |
| 114 | +// set<char> s2(str.begin(),str.end()); |
| 115 | +// |
| 116 | +// cout << s2.size() << " " << s2.max_size() << endl; |
| 117 | +// return 0; |
| 118 | +//} |
| 119 | + |
| 120 | +//void print(set<int>::iterator begin, set<int>::iterator end) |
| 121 | +//{ |
| 122 | +// while (begin != end) |
| 123 | +// { |
| 124 | +// std::cout << *begin << " "; |
| 125 | +// begin++; |
| 126 | +// } |
| 127 | +// |
| 128 | +// std::cout << std::endl; |
| 129 | +//} |
| 130 | +// |
| 131 | +//int main() |
| 132 | +//{ |
| 133 | +// set<int> s1; |
| 134 | +// s1.insert(5); |
| 135 | +// s1.insert(8); |
| 136 | +// s1.insert(6); |
| 137 | +// s1.insert(3); |
| 138 | +// s1.insert(9); |
| 139 | +// |
| 140 | +// print(s1.begin(),s1.end()); |
| 141 | +// //向s1中插入一个值 |
| 142 | +// s1.insert(15);//set中没有和要插入的值相同的值 |
| 143 | +// print(s1.begin(), s1.end()); |
| 144 | +// |
| 145 | +// s1.insert(3);//要插入的值set中已经存在 |
| 146 | +// print(s1.begin(), s1.end()); |
| 147 | +// |
| 148 | +// |
| 149 | +// //删除 |
| 150 | +// s1.erase(15); |
| 151 | +// print(s1.begin(), s1.end()); |
| 152 | +// |
| 153 | +// |
| 154 | +// //swap---交换两个set |
| 155 | +// set<int> s2; |
| 156 | +// s2.insert(50); |
| 157 | +// s2.insert(80); |
| 158 | +// s2.insert(60); |
| 159 | +// s2.insert(30); |
| 160 | +// s2.insert(90); |
| 161 | +// |
| 162 | +// s1.swap(s2); |
| 163 | +// print(s1.begin(), s1.end()); |
| 164 | +// print(s2.begin(), s2.end()); |
| 165 | +// |
| 166 | +// //查找 |
| 167 | +// auto it = s1.find(30); |
| 168 | +// cout << *it << endl; |
| 169 | +// s1.erase(it); |
| 170 | +// print(s1.begin(), s1.end()); |
| 171 | +// |
| 172 | +// //count |
| 173 | +// cout << s1.count(50) << endl; |
| 174 | +// |
| 175 | +// return 0; |
| 176 | +//} |
| 177 | + |
| 178 | +int main() |
| 179 | +{ |
| 180 | + map<char, int> m1;//构造一个空的map |
| 181 | + /* |
| 182 | + operator[]的原理是: |
| 183 | + 用<key, T()>构造一个键值对,然后调用insert()函数将该键值对插入到map中 |
| 184 | + 如果key已经存在,插入失败,insert函数返回该key所在位置的迭代器 |
| 185 | + 如果key不存在,插入成功,insert函数返回新插入元素所在位置的迭代器 |
| 186 | + operator[]函数最后将insert返回值键值对中的value返回*/ |
| 187 | + |
| 188 | + m1['a'] = 65; |
| 189 | + m1.insert(pair<char, int>('a', 65)); |
| 190 | + m1.insert(pair<char, int>('b', 66)); |
| 191 | + m1.insert(pair<char, int>('c', 67)); |
| 192 | + m1.insert(pair<char, int>('d', 68)); |
| 193 | + m1.insert(pair<char, int>('e', 69)); |
| 194 | + m1.insert(pair<char, int>('f', 70)); |
| 195 | + |
| 196 | + auto it = m1.find('a');//key值查找 |
| 197 | + |
| 198 | + //删除 |
| 199 | + m1.erase('b');//key值删除 |
| 200 | + m1.erase(it);//迭代器删除 |
| 201 | + m1.erase(m1.begin(),m1.end());//迭代器区间删除 |
| 202 | + |
| 203 | + //清空 |
| 204 | + m1.clear(); |
| 205 | + |
| 206 | + //拷贝构造 |
| 207 | + map<char, int> m2(m1); |
| 208 | + m1.swap(m2); |
| 209 | + |
| 210 | + |
| 211 | + return 0; |
| 212 | +} |
0 commit comments