6.4 map的常用用法

本文介绍了常用STL容器map的使用。首先说明了使用map需添加头文件,接着阐述了map的定义,包括键和值的类型。然后介绍了map的两种访问方式,即下标访问和迭代器访问。最后列举了map常见函数,如find、erase、size和clear等的功能和用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  map翻译为映射,也是常用的STL容器,在使用map时,需要添加map头文件,#include<map>。

  1,map的定义

  map<typename1,typename2>mp,typename1是映射前的类型(键key)typename2是映射后类型(值value),如:map<string,int>mp,是int型映射到int型,另外map的键和值也可以是STL容器,例如map<set<int>,string>mp。注:如果是字符串到整型的映射必须使用string 而不是char。

2,map的访问

map的访问有两种方式,一是通过下标访问,二是通过迭代器访问。

下标访问:

#include<stdio.h> 
#include<map>
using namespace std;
int main(){
	map<char,int>mp;
	mp['c']=20;
	mp['c']=30;
	printf("%d\n",mp['c']);
	return 0;
}

迭代器访问:

  迭代器的定义:map<typename1,typename2>::iterator it;这样就得到了迭代器it,我们可以使用it->first来访问键,通过it->second来访问值。

#include<stdio.h> 
#include<map>
using namespace std;
int main(){
	map<char,int>mp;
	mp['m']=20;
	mp['r']=30;
	mp['a']=40;
	for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++){
	printf("%c %d\n",it->first,it->second);	
	}
	return 0;
}

3,map常见函数

 (1)find():find(key)返回键为key的映射的迭代器。

#include<stdio.h> 
#include<map>
using namespace std;
int main(){
	map<char,int>mp;
	mp['m']=20;
	mp['r']=30;
	mp['a']=40;
	map<char,int>::iterator it=mp.find('r');
	printf("%c %d\n",it->first,it->second);
	return 0;
}

 (2)erase()可以删除单个元素和删除整个区间 的元素。

  删除单个元素有两种方法,一是mp.erase(it),it是需要删除元素的迭代器。

#include<stdio.h> 
#include<map>
using namespace std;
int main(){
	map<char,int>mp;
	mp['m']=20;
	mp['r']=30;
	mp['a']=40;
	map<char,int>::iterator it=mp.find('r');
	mp.erase(it);
	for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++){
		printf("%c %d\n",it->first,it->second);
	}
	return 0;
}

二是mp.erase(key)key是要删除映射的键。

#include<stdio.h> 
#include<map>
using namespace std;
int main(){
	map<char,int>mp;
	mp['m']=20;
	mp['r']=30;
	mp['a']=40;
	mp.erase('r');
	for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++){
		printf("%c %d\n",it->first,it->second);
	}
	return 0;
}

删除一个区间的元素,mp.erase(first,last),first是需要删除区间的起始迭代器,last是需要删除的区间的末尾迭代器的下一个地址,就是删除区间为[first,last)。

#include<stdio.h> 
#include<map>
using namespace std;
int main(){
	map<char,int>mp;
	mp['m']=20;
	mp['r']=30;
	mp['a']=40;
	map<char,int>::iterator it=mp.find('r');
	mp.erase(it,mp.end());
	for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++){
		printf("%c %d\n",it->first,it->second);
	}
	return 0;
}

 (3)size())用来获得map中映射对数。

(4)clear()清空map中的所有元素。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值