题目描述
输入N个学生的信息,然后进行查询。
输入描述:
输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N个学生的信息,信息格式如下: 01 李江 男 21 02 刘唐 男 23 03 张军 男 19 04 王娜 女 19 然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下: 02 03 01 04
输出描述:
输出M行,每行包括一个对应于查询的学生的信息。 如果没有对应的学生信息,则输出“No Answer!”
示例1
输入
复制
4 01 李江 男 21 02 刘唐 男 23 03 张军 男 19 04 王娜 女 19 5 02 03 01 04 03
输出
复制
02 刘唐 男 23 03 张军 男 19 01 李江 男 21 04 王娜 女 19 03 张军 男 19
用string no做key值,用infor结构体做value值
#include<iostream>
#include<map>
using namespace std;
struct infor{ //存储姓名性别年龄
string name;
string sex;
int year;
infor(string s1,string s2,int y):name(s1),sex(s2),year(y){}
};
map<string,infor> student;
int main(){
int n;
cin>>n;
while(n--){
string no,name,sex;
int year;
cin>>no>>name>>sex>>year;
// infor temp=infor(name,sex,year);
student.insert(pair<string,infor>(no,infor(name,sex,year))); //加到map里边去
}
int m;
cin>>m;
while(m--){
string no;
cin>>no;
map<string,infor>::iterator it;
it=student.find(no);
if(it==student.end()){
cout<<"No Answer!"<<endl;
}
else{
infor temp=student.at(no); //这块如果用student[no]会出错
cout<<no<<" "<<temp.name<<" "<<temp.sex<<" "<<temp.year<<endl;
}
}
return 0;
}