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 }

 

posted @ 2021-05-12 15:03  yub4by  阅读(159)  评论(0编辑  收藏  举报