PAT A1022 Digital Library (30)----map图书馆应用

1. while (cin >> key) {
            pp[key].push_back(id);
            char c = getchar();
            if (c == '\n') break;
        }

读入keywords的时候,用c读取空格,如果c为\n结束

代码:

#include<iostream>
#include<map>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
map<string, vector<string> >pp;
bool cmp(const string& a, const string&b)
{
    return a < b;
}
int main()
{
    int m, n;
    cin >> m; getchar();
    for (int i = 0; i < m; i++)
    {
        string id, title, author, key, pub, year;
        getline(cin, id);
        getline(cin, title); pp[title].push_back(id);
        getline(cin, author); pp[author].push_back(id);
        while (cin >> key) {
            pp[key].push_back(id);
            char c = getchar();
            if (c == '\n') break;
        }
        getline(cin, pub); pp[pub].push_back(id);
        getline(cin, year); pp[year].push_back(id);
    }
    for (auto it = pp.begin(); it != pp.end(); it++)
    {
        sort(it->second.begin(),it->second.end(),cmp);
    }
    cin >> n; getchar(); string query; string b;
    for (int i = 0; i < n; i++)
    {
        cin >> b; getline(cin, query); query.erase(0,1);
        cout << b <<" "<< query << endl;
        if (pp[query].empty())printf("Not Found\n");
        else{
            for (auto it = pp[query].begin(); it != pp[query].end(); it++)
                cout << *it << endl;
        }
    }

    return 0;
}

发布了197 篇原创文章 · 获赞 7 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览