PAT1022

考察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;
}

猜你喜欢

转载自blog.csdn.net/qq_38677814/article/details/80815971