从映射删除元素| C ++ STL

我们可以使用std :: map :: erase()函数来删除映射中的单个元素或元素范围。如果要删除映射中的所有元素,可以使用std :: map :: clear()函数。让我们详细讨论这些功能。

1. std :: map :: erase()函数

它将元素从映射中删除,并将映射大小减小1。

语法:

    //使用迭代器擦除: 
    MapName.erase (it);
    //其中“ it”是类型映射的迭代器。

    //按键擦除:
    MapName.erase (key);

    //按范围擦除:
    MapName.erase (first,last);
    //其中范围包括映射的所有元素 
    //在first和lasti.e [first,last)之间。

程序:

#include <bits/stdc++.h>
using namespace std;

int main ()
{

	map<char,int> MyMap;

	//在映射中插入一些元素
	MyMap['a']=1;
	MyMap['b']=2;
	MyMap['c']=3;
	MyMap['d']=4;
	MyMap['e']=5;
	MyMap['f']=6;
	MyMap['g']=7;

	map<char,int>::iterator it;

	cout<<"Elements in map : "<<endl;
	for (it = MyMap.begin(); it != MyMap.end(); it++) 
	{ 
		cout  <<"key = "<< it->first <<" value = "<< it->second <<endl; 
	}
	cout<<endl;  
	
	//使用键删除
	MyMap.erase ('f');

	//通过迭代器擦除
	it=MyMap.find('e');
	MyMap.erase (it); 

	cout<<"Elements in map after deleting f and e: "<<endl;
	for (it = MyMap.begin(); it != MyMap.end(); it++) 
	{ 
		cout  <<"key = "<< it->first <<" value = "<< it->second <<endl; 
	}
	cout<<endl;  
	
	//按范围擦除
	//请注意,last不包含
	//从a删除元素到c- 
	it = MyMap.find('d');             
	MyMap.erase ( MyMap.begin() , it );   

	cout<<"Elements in map after deleting a to c : "<<endl;
	for (it = MyMap.begin(); it != MyMap.end(); it++) 
	{ 
		cout  <<"key = "<< it->first <<" value = "<< it->second <<endl; 
	}

	return 0;
}

输出结果

Elements in map :
key = a value = 1
key = b value = 2
key = c value = 3
key = d value = 4
key = e value = 5
key = f value = 6
key = g value = 7

Elements in map after deleting f and e:
key = a value = 1
key = b value = 2
key = c value = 3
key = d value = 4
key = g value = 7

Elements in map after deleting a to c :
key = d value = 4
key = g value = 7