zoukankan      html  css  js  c++  java
  • A1022 Digital Library [map]

    在这里插入图片描述
    思路:根据书本信息查出所有的与之相关的书本编号,用map<string,set> 存 开五个容器存不同信息 根据不同的查询种类 利用关键字查询。
    注意事项:
    参数传引用比传值更快

    #include<vector>
    #include<iostream>
    #include<algorithm>
    #include<unordered_map>
    #include<set>
    #include<map>
    #include<cstring>
    #include<string>
    using namespace std;
    map<string, set<int> >title, author, key, pub, year;
    void query(map<string, set<int>>&mp, string& str)
    {
    	if (mp.find(str) == mp.end())
    		printf("Not Found
    ");
    	else
    	{
    		for(set<int>::iterator it=mp[str].begin();it!=mp[str].end();it++)
                printf("%07d
    ",*it);
    	}
    }
    int main()
    {
    	int n, m, id, type;
    	string ctitle, cauthor, ckey, cpub, cyear;
    	scanf("%d", &n);
    	for (int i = 0; i < n; i++)
    	{
    		scanf("%d", &id);
    		char c = getchar();
    		getline(cin, ctitle);
    		title[ctitle].insert(id);
    		getline(cin, cauthor);
    		author[cauthor].insert(id);
    		while (cin >> ckey)
    		{
    			key[ckey].insert(id);
    			c = getchar();
    			if (c == '
    ') break;
    		}
    		getline(cin, cpub);
    		pub[cpub].insert(id);
    		getline(cin, cyear);
    		year[cyear].insert(id);
    	}
    	string temp;
    	scanf("%d", &m);
    	for (int i = 0; i < m; i++)
    	{
    		scanf("%d: ", &type);
    		getline(cin, temp);
    		cout << type << ": " << temp << endl;
    		if (type == 1) query(title, temp);
    		else if (type == 2) query(author, temp);
    		else if (type == 3) query(key, temp);
    		else if (type == 4) query(pub, temp);
    		else query(year, temp);
    	}
    	return 0;
    }
    
  • 相关阅读:
    【371】Twitter 分类相关
    【370】Python列表生成式(for 写入一行)
    Netbeans 中的编译器相关配置
    SP*
    du 命令
    闲杂
    Shell重定向&>file、2>&1、1>&2的区别
    Shell编程中Shift的用法
    shell中一维数组值得获取
    shell expr的用法
  • 原文地址:https://www.cnblogs.com/Hsiung123/p/13812031.html
Copyright © 2011-2022 走看看