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

插入:

​	m.insert(map<int,string>::value_type(1,"a"));//map容器,键值类型,value_type都不能少
      //m.insert(make_pair<int,string>(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<int,string>::iterator i = m.begin();
	while(i != m.end()){
		if(i->first == 2)
			i = m.erase(i);
		i++;
	}
	*/

完整代码:

#include <iostream>
#include <map>
#include <string>

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<int,string>(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<int,string>::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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值