标签:namespace lag ace cout cin getchar getline div title
#include<iostream>
#include<vector>
#include <string>
#include <set>
using namespace std;
struct book{
int ID;
string title;
string author;
vector<string>key_word;
string publisher,year;
};
int main(){
int n,m,t_ID,temp,flag=0;
string t_title,t_author,t_key,t_pub,content,t_year;
cin>>n;
vector<book>B(n);
for(int i=0;i<n;i++){
book b;
cin>>t_ID;
getchar();
getline(cin,t_title);
getline(cin,t_author);
while(cin>>t_key){
b.key_word.push_back(t_key);
char c=getchar();
if(c==‘\n‘)
break;
}
getline(cin,t_pub);
cin>>t_year;
b.ID=t_ID;
b.title=t_title;
b.author=t_author;
b.publisher=t_pub;
b.year=t_year;
B.push_back(b);
}
cin>>m;
set<int>S;
for(int i=0;i<m;i++){
scanf("%d: ",&temp);
getline(cin,content);
if(temp==1){
for(int j=0;j<B.size();j++){
if(B[j].title==content){
S.insert(B[j].ID);
flag=1;
}
}
}
if(temp==2){
for(int j=0;j<B.size();j++){
if(B[j].author==content){
S.insert(B[j].ID);
flag=1;
}
}
}
if(temp==3){
for(int j=0;j<B.size();j++){
for(int k=0;k<B[j].key_word.size();k++)
if(B[j].key_word[k]==content){
S.insert(B[j].ID);
flag=1;
}
}
}
if(temp==4){
for(int j=0;j<B.size();j++){
if(B[j].publisher==content){
S.insert(B[j].ID);
flag=1;
}
}
}
if(temp==5){
for(int j=0;j<B.size();j++){
if(B[j].year==content){
S.insert(B[j].ID);
flag=1;
}
}
}
if(flag==1){
cout<<temp<<": "<<content<<endl;
for(auto it=S.begin();it!=S.end();it++) printf("%07d\n",*it);
}
else{
cout<<temp<<": "<<content<<endl;
cout<<"Not Found"<<endl;
}
S.clear();
flag=0;
}
return 0;
}
将有空格隔开的一个字符串分为数个字符串时可以用:
while(cin>>t_key){
b.key_word.push_back(t_key);
char c=getchar();
if(c==‘\n‘)
break;
}
==============在拿到此题的时候我感觉这题可以用map来做,但是还是觉得用结构体模拟要简单一点,下面我想用map试试
标签:namespace lag ace cout cin getchar getline div title
原文地址:https://www.cnblogs.com/tao7/p/12236188.html