###注意
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;
}