1 #include<iostream>
2 #include<cstdlib>
3 using namespace std;
4 #include<map>
5
6
7 /*
8 3.9.3 map大小和交换
9
10 size(); //返回容器中元素的数目
11 empty(); //判断容器是否为空
12 swap(st); //交换两个集合容器
13
14 3.9.4 map插入和删除
15
16 insert(elem); //在容器中插入元素。
17 clear(); //清除所有元素
18 erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。
19 erase(beg, end); //删除区间[beg,end)的所有元素 ,返回下一个元素的迭代器。
20 erase(key); //删除容器中值为key的元素。
21 */
22
23
24 void print_map(const map<int, int> & m)
25 {
26 for(map<int, int>::const_iterator cit=m.begin(); cit!=m.end(); cit++)
27 {
28 cout << "key=" << (*cit).first << " value=" << cit->second << endl;
29 }
30 cout << endl;
31 }
32
33
34 void test393()
35 {
36 map<int, int> m;
37 m.insert(pair<int, int> (1, 100));
38 m.insert(pair<int, int> (2, 200));
39 m.insert(pair<int, int> (3, 300));
40
41 if(m.empty())
42 {
43 cout << "m is null" << endl;
44 }
45 else
46 {
47 cout << "m not null" << endl;
48 cout << "size of m:" << m.size() << endl;
49 }
50
51 map<int, int> m2;
52 m2.insert(pair<int, int> (5, 50));
53 m2.insert(pair<int, int> (6, 60));
54 m2.insert(pair<int, int> (7, 70));
55
56 cout << "交换前:" << endl;
57 print_map(m);
58 print_map(m2);
59
60 m.swap(m2);
61
62 cout << "交换后:" << endl;
63 print_map(m);
64 print_map(m2);
65 }
66
67
68 void test394()
69 {
70 map<int, int> m;
71
72 //插入
73 //1
74 m.insert(pair<int, int> (1, 10));
75 //2
76 m.insert(make_pair(2, 20)); //推荐
77 //3
78 m.insert(map<int, int>::value_type(3, 30));
79 //4
80 m[4] = 40;
81
82 //不建议用m[]=xx来插入数据,原因见下行输出
83 cout << m[5] << endl; //m中不存在[5],则自动添加默认以0为值的新键值对:(5, 0)
84 //m[]多用于利用key来访问value,例如下行
85 cout << m[4] << endl; //Ok
86
87 print_map(m);
88
89 //删除
90 m.erase(m.begin());
91 print_map(m);
92 m.erase(3); //根据key删除键值对
93 print_map(m);
94 m.erase(m.begin(), m.end()); //效果同m.clear()清空
95 print_map(m);
96 }
97
98
99 int main()
100 {
101 test393();
102 test394();
103
104 system("pause");
105 return 0;
106 }
