5383: C++实验:STL之multimap
描述
使用STL中的multimap记录用户的所有电话号码,yuyu想查询用户有多少个电话号码,crq则想查询时输出所有的号码。
部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码。
- C++
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
注意:这个程序里的make_pair是生成一个有序对的意思,这个对里包含了姓名和电话,并非需要我们自定义的函数,所以在主函数里的
sm.insert(make_pair(name, phone));
是生成一个包含name和phone的有序对, 再将这个对插入到sm中
完整代码:
#include<bits/stdc++.h> using namespace std; void YuYuSearch(multimap<string,string> &sm) { multimap<string,string>::iterator it; int t; cin >> t; while(t--) { int k = 0; string s;cin >> s; for(it = sm.begin(); it != sm.end(); it++) { if(it->first == s)k++; } cout << k << endl; } } void CrqSearch(multimap<string,string> &sm) { multimap<string,string>::iterator it; int t; cin >> t; while(t--) { string s; cin >> s; int f = 0; for(it = sm.begin(); it != sm.end(); it++) { if(it->first == s) { f = 1; cout << it->second << endl; } } if(!f)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)); } YuYuSearch(sm); CrqSearch(sm); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现