题目:链接
题意
输入一系列快递单号以及城市,统计每座城市的快递单号数量,并按照城市输入顺序,输出城市、快递单号的数量以及每一个快递单号。
思路
重点在于数据的存储形式,STL中的map可以存储键值对,并且能够很方便的通过“键”查找“值”,所以可以采用map<string, vector> mp的形式,前一个string存储城市名字,后一个vector容器中存放快递单号。还需要注意的一点是需要记录下城市的输入顺序,所以还需要一个vector cities变量来存储城市名字。
心得
进一步掌握STL中的map,比如:mp.count(b),mp[b].size()……
代码
#include <bits/stdc++.h>
using namespace std;
map<string,vector<string>> mp;
vector<string> cities;
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n;cin>>n;
for(int i=0;i<n;i++)
{
string a,b;cin>>a>>b;
if(!mp.count(b)) cities.push_back(b);
mp[b].push_back(a);
}
for(const auto&city:cities)
{
cout<<city<<' '<<mp[city].size()<<'\n';
for(const auto&i:mp[city])
{
cout<<i<<'\n';
}
}
return 0;
}