(蓝桥OJ:1531)快递分拣—->map(理解key与value),vector(push_back)

###注意
map<int,int>插入元素是无法使用push_back的,因为它的value仅是一个int类型的值而并非容器,map使用insert插入(一对)
map<int,vector>插入是使用push_back,它的value是一个容器vector
vector是向量也是容器,vector的插入是push_back
set集合与multiset集合同理,使用insert插入(单个)
priority_queue优先队列,queue队列与stack栈的插入是push(pop是弹出)
###补充
map中count是记录key(key唯一)的值,count为1说明该key数量为1(key存在)/count为0说明该key数量为0(key不存在)
map<int,vector>中使用size()一般是记录vector中的元素数量
在这里插入图片描述
在这里插入图片描述
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
map<string,vector>mymap;//key是城市,value是单号
//key唯一,value不唯一,一个城市对应多个单号,所以在此使用vector
vectorcitys;//再创建一个容器,装下不重复的城市
int n;
cin>>n;
//遍历输入,输进map
for(int i=0;i<n;++i)
{
string S;//快递单号
string P;//城市
cin>>S>>P;
if(!mymap.count§)//如果在mymap中,该城市不存在,说明是第一次出现
//那么就把这个城市加入到容器中
{
citys.push_back§;
}
mymap[P].push_back(S);//不管这个城市是否是新出现的城市,单号都要进该key(城市)所对应的value(vector)中

}
for(auto city:citys)//由于容器中都是不重复的城市,遍历容器,再输出单号
{
cout<<city<<" "<<mymap[city].size()<<endl;
for(auto number:mymap[city])
{
cout<<number<<endl;
}
}
return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值