Skip to content

Commit 2183526

Browse files
authored
map和set的使用
1 parent cb64467 commit 2183526

1 file changed

Lines changed: 212 additions & 0 deletions

File tree

map/map_set

Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,212 @@
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

Comments
 (0)