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 }
打印结果:
=====================================================================================================================