C ++ map delete()函数用于从map容器中删除与给定键值关联的单个元素或元素范围。因此,将通过删除元素的数量来减小尺寸。
void erase (iterator position); // 在 C++ 11 之前 size_type erase (const key_type& k); // 在 C++ 11 之前 void erase (iterator first, iterator last); // 在 C++ 11 之前 iterator erase (const_iterator position); //从 C++ 11 开始 size_type erase (const key_type& k); //从 C++ 11 开始 iterator erase (const_iterator first, const_iterator last); //从 C++ 11 开始
position:指向要从map中删除的单个元素的迭代器。
k:要从map上移除的元素的键。
first:要擦除范围的开始。
last:要擦除范围的末尾。
它返回一个指向已删除元素的下一个元素的迭代器,或者返回已删除元素的数量。
让我们看一个简单的示例,通过迭代器擦除元素。
#include <iostream> #include <map> #include <string> using namespace std; int main () { map<char,int> mymap; map<char,int>::iterator it; mymap['a']=10; mymap['b']=20; mymap['c']=30; mymap['d']=40; cout<<"删除元素之前: \n"; for (it=mymap.begin(); it!=mymap.end(); ++it) std::cout << it->first << " => " << it->second << '\n'; it=mymap.find('b'); mymap.erase (it); // erasing by iterator cout<<"\n删除元素后: \n"; for (it=mymap.begin(); it!=mymap.end(); ++it) std::cout << it->first << " => " << it->second << '\n'; return 0; }
输出:
删除元素之前: a => 10 b => 20 c => 30 d => 40 删除元素后: a => 10 c => 30 d => 40
在上面的示例中,元素被迭代器擦除。
让我们看一个简单的示例,以给定的键值擦除map的元素。
#include <iostream> #include <map> #include <string> using namespace std; int main () { map<char,int> mymap; map<char,int>::iterator it; mymap['a']=10; mymap['b']=20; mymap['c']=30; mymap['d']=40; cout<<"删除元素之前: \n"; for (it=mymap.begin(); it!=mymap.end(); ++it) std::cout << it->first << " => " << it->second << '\n'; mymap.erase ('c'); // erasing by key cout<<"\n删除元素后: \n"; for (it=mymap.begin(); it!=mymap.end(); ++it) std::cout << it->first << " => " << it->second << '\n'; return 0; }
输出:
删除元素之前: a => 10 b => 20 c => 30 d => 40 删除元素后: a => 10 b => 20 d => 40
在上面的示例中,delete(key)函数使用键值'c'及其映射中的值。
让我们看一个简单的示例,以给定范围擦除元素。
#include <iostream> #include <map> #include <string> using namespace std; int main () { map<char,int> mymap; map<char,int>::iterator it; mymap['a']=10; mymap['b']=20; mymap['c']=30; mymap['d']=40; cout<<"删除元素之前: \n"; cout<<"Size大小: "<<mymap.size()<<'\n'; for (it=mymap.begin(); it!=mymap.end(); ++it) cout << it->first << " => " << it->second << '\n'; mymap.erase ( mymap.begin () , mymap.end () ); // erasing by range cout<<"\n删除元素后: \n"; cout<<"Size大小: "<<mymap.size(); for (it=mymap.begin(); it!=mymap.end(); ++it) cout << it->first << " => " << it->second << '\n'; return 0; }
输出:
删除元素之前: Size is: 4 a => 10 b => 20 c => 30 d => 40 删除元素后: Size is: 0
在上面的示例中,使用了delete(first,last)函数来擦除具有给定范围(即开始到结束)的元素。
让我们看一个简单的示例,从map中删除所有奇数。
#include <map> #include <iostream> using namespace std; int main() { map<int, string> m = {{1, "one"}, {2, "two"}, {3, "three"}, {4, "four"}, {5, "five"}, {6, "six"}}; // 从m删除所有奇数 cout<<"删除奇数后,元素是:\n "; for(auto it = m.begin(); it != m.end(); ) if(it->first % 2 == 1) it = m.erase(it); else ++it; for(auto& p : m) cout << p.second << ", "; }
输出:
删除奇数后,元素是: two, four, six,
在上面的示例中,所有奇数均已删除,并显示偶数。