c++map初级使用

map是c++stl里面写好的结构,map内部自成一颗红黑树,也就是严格按照第一关键字排序;

事实上,这里的第一关键字对应的是第二关键字,两者不能说相似,只能说毫不相关;

这里的第一关键字相当于一个钥匙(key),由第一关键字我们能严格找到第二关键字,如果第二关键字是int的话,我们可以对其进行运算,如果是string的话,我们也可以对其进行基本的string运算;

map有着和数组类似的写法,但是map内部的关键字不重复;

让我们来看一道简单的题目学习一下map:PTA | 程序设计类实验辅助教学平台

这是一道来自2021年天梯赛的真题,这道题要求我们把所有的数据处理一下,然后找到出现最大的和最小的两组数据;

这里有两种方法,其一,我们可以开一个数组直接存储第一个数据,然后排序后卑鄙(名词)去重,接着直接找到第一组数据最后一个,最后一组数据最后一个,输出即可

卑鄙去重图示

 只需要遍历数组即可做到;

第二种方法就是map,关键词都为int类型,直接找到key然后加加即可,如果没有map会给你搞一个;

代码:

#include<iostream>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;

map<int,int>mp;//关键词为int int的map 

int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	{
		int m;
		cin>>m;
		mp[m]++;//直接加加,也就是后面的int来计数,前面的int是关键词 
	}
	int mi=0x3f3f3f3f,ma=0,a,b;
	for(auto x: mp)//auto是自动识别类型函数,要是不想写这个也可以写 map<int,int>
//或者是map的迭代器 
	{
		if(x.first<mi)
		{
			mi=x.first;
			a=x.second;
		}
		if(x.first>ma)
		{
			ma=x.first;
			b=x.second;
		}
	}
	
	cout<<mi<<' '<<a<<endl;
	cout<<ma<<' '<<b;//直接输出即可 
}
 

至此,完结撒花;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值