学习 STL ,本题就是一个 str -> str -> int 的映射,要是熟悉 STL 很好做,不过很久不写也忘记的差不多了,看了一个别人怎么搞的,还是感觉 STL 很强,习惯了 python 就乱用 C ,自己写的一堆 bug 。
那我们懂了是 str -> str -> int 的映射关系,用 map 来存储,开个 iterator 迭代就可以了,因为 auto 禁用,所以就用 iterator 就可以。
代码语言:javascript复制#include <bits/stdc .h>
using namespace std;
int main()
{
int n;
cin >> n;
map<string,map<string,int> > fruit;
string type,place;
int num;
for(int i = 0; i < n; i ){
cin >> type >> place >> num;
fruit[place][type] = num;
}
map<string,map<string,int> > :: iterator it;
map<string,int> :: iterator ti;
for(it = fruit.begin(); it != fruit.end(); it ){
cout << it -> first << endl;
for (ti = it->second.begin(); ti != it->second.end(); ti ){
cout << " |----" << ti->first << "(" << ti->second << ")" << endl;
}
}
return 0;
}
图片源于计蒜客,侵删。