【MAP】插入、修改、删除、查找

插入:

​	m.insert(map<int,string>::value_type(1,"a"));//map容器,键值类型,value_type都不能少
      //m.insert(make_pair(1,"a"));	     //同样效果 ​

修改:

  • 要么指针修改,要么数组修改
​	m.insert(map<int,string>::value_type(1,"b"));//程序可以正常执行,但这条语句毫无用处。
	m.insert(make_pair<int,string>(1,"b"));	     //程序可以正常执行,但这条语句毫无用处。
	m[1] = "b";				     //成功修改键值对 ​
for(map<int,string>::iterator i = m.begin() ; i != m.end() ; i++){
		if(i->first == 2)
			i->second = "what";
	}

删除:

​	m[1] = "a";
	m[2] = "b";
	m[3] = "c";
	
	//正确的写法: 
	for(map<int,string>::iterator i = m.begin() ; i != m.end() ; i++){
		if(i->first == 2)
			m.erase(i);//此时 i 是野指针,但是不用担心,因为 i++ 仍然有意义且 i 只在本循环中使用。		 
	}
	
	/*
	错误的写法:这种方法是网上推荐的写法,但是实操并不正确。 
	map::iterator i = m.begin();
	while(i != m.end()){
		if(i->first == 2)
			i = m.erase(i);
		i++;
	}
	*/

完整代码:

#include 
#include 
#include 

using namespace std;

int main(){
	map<int,string> m;
	m.insert(map<int,string>::value_type(1,"a"));//map容器,键值类型,value_type都不能少 
      //m.insert(make_pair(1,"a"));	     //同样效果 
    
	m.insert(map<int,string>::value_type(1,"b"));//程序可以正常执行,但这条语句毫无用处。
	m.insert(make_pair<int,string>(1,"b"));	     //程序可以正常执行,但这条语句毫无用处。
	m[1] = "a";				     //成功修改键值对 
	m[2] = "b";
	m[3] = "c";
	
	//正确的写法: 
	for(map<int,string>::iterator i = m.begin() ; i != m.end() ; i++){
		if(i->first == 2)
			m.erase(i);//此时 i 是野指针,但是不用担心,因为 i++ 仍然有意义且 i 只在本循环中使用。		 
	}
	
	/*
	错误的写法:这种方法是网上推荐的写法,但是实操并不正确。 
	map::iterator i = m.begin();
	while(i != m.end()){
		if(i->first == 2)
			i = m.erase(i);
		i++;
	}
	*/
	
	for(map<int,string>::iterator i = m.begin() ; i != m.end() ; i++)
		cout<<i->second;
	return 0;
}

补充:

  • 查找:
if(M.count(key))
	cout<<"已有"<<endl;
else
	cout<<"没有"<<endl;

你可能感兴趣的:(STL,杂文讲解)