水果:
在这道题中,要求我们对地点,水果,个数三个信息进行匹配,对于一对一的匹配问题,我们很容易联想到使用map函数。
但是由于这道题需要将三个变量进行联系,我们不如进行双重map已达到目的。
#include <iostream>
#include <algorithm>
#include <string>
#include <map>
using namespace std;
int main()
{
int t,n,number;
cin>>t;
while(t--)
{
string place,fruit;
map<string,map<string,int> >p;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>fruit>>place>>number;
p[place][fruit]+=number;
}
map <string, map<string, int> > :: iterator it1;//第一重map的迭代器
for (it1 = p.begin(); it1 != p.end(); it1++)
{
cout << it1->first << endl;
map<string, int> :: iterator it2;//内部map的迭代器,在第一重map的内部进行实现
for (it2 = it1->second.begin(); it2 != it1->second.end(); it2++)
{
//it2 = it1->second.begin()即it2等于第二重map
cout << " |----" << it2->first << "(" << it2->second << ")" << endl;
}
}
if(t!=0)
cout<<endl;
}
return 0;
}