STL之multimap
描述
使用STL中的multimap记录用户的所有电话号码,yuyu想查询用户有多少个电话号码,crq则想查询时输出所有的号码。
部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。
int main() { multimap<string, string> sm; string name, phone; int n; cin>>n; while(n--) { cin>>name>>phone; sm.insert(make_pair(name, phone)); } YuYuSearch(sm); CrqSearch(sm); return 0; }
输入
输入数据第一行为n,表示有n条姓名和对应号码记录。
接下来有n行,每行一个姓名和电话号码。
接下来一行为正整数m,下面的m行中每行为yuyu想查询的姓名。
接下来一行为正整数k,下面的k行中每行为crq想查询的姓名。
输出
对于yuyu想查询的姓名,输出该姓名有多少个电话号码,每行一个数。
对于crq想查询的姓名,输出该姓名所有的电话号码(按输入的顺序),每行一个电话号码,如果不存在则输出None。
样例输入
3
crq 13512345678
yuyu 15988888888
crq 0576-12345678
3
crq
yuyu
kangkang
2
crq
yuyu
样例输出
2
1
0
13512345678
0576-12345678
15988888888
#include <iostream> #include <algorithm> #include <vector> #include <map> #include <string> using namespace std; void YuYuSearch(multimap<string, string> &sm) { int t; multimap<string, string>::iterator it; cin >> t; while (t--) { int i, k = 0; string ss; cin >> ss; for (it = sm.begin(); it !=sm.end(); it++) { if (it->first == ss) { k++; } } cout << k << endl; } } void CrqSearch(multimap<string, string> &sm) { int i; int t; multimap<string, string>::iterator it; cin >> t; while (t--) { int k = 0; string ss; cin >> ss; for (it = sm.begin(); it != sm.end(); it++) { if (it->first == ss) { cout << it->second << endl; k = 1; } } if (!k) cout << "None" << endl; } } int main() { multimap<string, string> sm; string name, phone; int n; cin>>n; while(n--) { cin>>name>>phone; sm.insert(make_pair(name, phone));//用insert函数插入multimap容器 } YuYuSearch(sm); CrqSearch(sm); return 0; }