考察map的使用,map的遍历
嵌套vector 和
getline()函数
注意这玩意遇到回车停止
#include <bits/stdc++.h>
using namespace std;
map<string, vector<string> > book[10];
map<string, vector<string> >::iterator It;
int main(){
int n;
cin>>n;
getchar();//getline遇到回车会停止 我们需要提前吸收
string id,date,keyword,author,pub,title;//定义几个临时变量
for(int i=1;i<=n;i++){
getline(cin,id);
getline(cin,title);
book[1][title].push_back(id);
getline(cin,author);
book[2][author].push_back(id);
do{
cin>>keyword;
book[3][keyword].push_back(id);
}while(getchar()!='\n');
getline(cin,pub);
book[4][pub].push_back(id);
getline(cin,date);
book[5][date].push_back(id);
}
for(int i=1;i<=5;i++){
for(It=book[i].begin();It!=book[i].end();It++){
sort(It->second.begin(),It->second.end());
}
}
int N;
cin>>N;
for(int i=1;i<=N;i++){
int a;
cin>>a;
getchar();
getchar();
getline(cin,id);
printf("%d: %s\n",a,id.c_str());
if(book[a].find(id)==book[a].end()){
printf("Not Found\n");
}
else{
for(int j=0;j<book[a][id].size();j++){
cout<<book[a][id][j]<<endl;
}
}
}
return 0;
}