16.9.2【map容器的大小和交换、插入和删除】
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 }