Fork me on GitHub

STL——容器(Map & multimap)的删除

Map & multimap 的删除

  • map.clear();           //删除所有元素
  • map.erase(pos);      //删除pos迭代器所指的元素,返回下一个元素的迭代器。
  • map.erase(beg,end);//删除区间[beg,end)的所有元素  ,返回下一个元素的迭代器。
  • map.erase(key);     //删除容器中key为key的对组,返回删除的对组个数

 

1. clear() 删除所有元素示例:

 1 #include <iostream>
 2 #include <map>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     map<int, string> mapStu1;
 9     mapStu1.insert(pair<int, string>(1, "内容A"));
10     mapStu1.insert(pair<int, string>(2, "内容B"));
11     mapStu1.insert(pair<int, string>(3, "内容C"));
12 
13     if (!mapStu1.empty())
14     {
15         cout << "容器 mapStu1 中共有" << mapStu1.size() << "个元素" << endl;
16     }
17     else
18     {
19         cout << "容器 mapStu1 中共有" << mapStu1.size() << "个元素, " << "容器为空" << endl;
20     }
21 
22     cout << "删除所有元素" << endl;
23     mapStu1.clear();
24     if (!mapStu1.empty())
25     {
26         cout << "容器 mapStu1 中共有" << mapStu1.size() << "个元素" << endl;
27     }
28     else
29     {
30         cout << "容器 mapStu1 中共有" << mapStu1.size() << "个元素, " << "容器为空" << endl;
31     }
32 
33     return 0;
34 }

打印结果:

 

 

2. erase(pos);  //删除pos迭代器所指的元素示例:

 1 #include <iostream>
 2 #include <map>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     map<int, string> mapStu1;
 9 
10     mapStu1.insert(pair<int, string>(1, "内容A"));
11     mapStu1.insert(pair<int, string>(2, "内容B"));
12     mapStu1.insert(pair<int, string>(3, "内容C"));
13     mapStu1.insert(pair<int, string>(4, "内容D"));
14     
15     map<int, string>::iterator it1 = mapStu1.begin();
16     cout << "删除首元素前, 首元素为:" << it1->first << "首元素内容为: " << it1->second << endl;
17     cout << endl;
18     map<int, string>::iterator it2 = mapStu1.erase(mapStu1.begin());
19     cout << "删除首元素后, 新的首元素为:" << it2->first << "首元素内容为: " << it2->second << endl;
20     
21     return 0;
22 }

打印结果:

 

 

3. erase(beg,end); //删除区间[beg,end)的所有元素示例

 1 #include <iostream>
 2 #include <map>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     map<int, string> mapStu1;
 9 
10     mapStu1.insert(pair<int, string>(1, "内容A"));
11     mapStu1.insert(pair<int, string>(2, "内容B"));
12     mapStu1.insert(pair<int, string>(3, "内容C"));
13     mapStu1.insert(pair<int, string>(4, "内容D"));
14     mapStu1.insert(pair<int, string>(5, "内容E"));
15 
16     cout << "遍历mapStu1: " << endl;
17     for (map<int, string>::iterator it = mapStu1.begin(); it != mapStu1.end(); it++)
18     {
19         cout << "容器 mapStu1 的第" << it->first << "个元素为: " << it->second << endl;
20     }
21 
22     cout << endl << "删除除首元素与尾部元素之间的所有元素" << endl;
23 
24     map<int, string>::iterator it = mapStu1.erase(++mapStu1.begin(), --mapStu1.end());
25     cout << endl << "删除完后返回的迭代器所指向的 key 为: " << it->first << "内容为: " << it->second << endl;
26 
27     cout << endl << "删除后遍历mapStu1: " << endl;
28     for (map<int, string>::iterator it = mapStu1.begin(); it != mapStu1.end(); it++)
29     {
30         cout << "容器 mapStu1 的第" << it->first << "个元素为: " << it->second << endl;
31     }
32 
33     return 0;
34 }

打印结果:

 

 

4. erase(key); //删除容器中key为key的对组示例

 1 #include <iostream>
 2 #include <map>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     multimap<int, string> multimapStu1;
 9 
10     multimapStu1.insert(pair<int, string>(1, "内容A"));
11     multimapStu1.insert(pair<int, string>(1, "内容AA"));
12     multimapStu1.insert(pair<int, string>(1, "内容AAA"));
13     multimapStu1.insert(pair<int, string>(2, "内容B"));
14     multimapStu1.insert(pair<int, string>(3, "内容C"));
15 
16     cout << "遍历mapStu1: " << endl;
17     for (map<int, string>::iterator it = multimapStu1.begin(); it != multimapStu1.end(); it++)
18     {
19         cout << "容器 mapStu1 key 为" << it->first << "的个元素为: " << it->second << endl;
20     }
21     cout << endl << "删除所有 key 为 1 的组" << endl;
22 
23     cout << endl << "共删除了" << multimapStu1.erase(1) << "个 key 为1的组" << endl;            //会返回删除的个数
24     cout << "遍历mapStu1: " << endl;
25     for (map<int, string>::iterator it = multimapStu1.begin(); it != multimapStu1.end(); it++)
26     {
27         cout << "容器 mapStu1 key 为" << it->first << "的个元素为: " << it->second << endl;
28     }
29 
30     return 0;
31 }

打印结果:

 

 

 

 

 

=====================================================================================================================

posted @ 2020-06-15 02:12  索智源  阅读(1214)  评论(0编辑  收藏  举报