realoj 106 book类 按要求排序
来源:互联网 发布:e世博网络博客 编辑:程序博客网 时间:2024/05/29 14:40
#include<iostream>#include<fstream>#include<sstream>#include<vector>#include<string>#include<stack>#include<cmath>#include<cstdlib>#include<algorithm>#include<functional>#include<ctime>#include<iomanip>#include<cstring>#include <cstdio>#include <map>#include <list>#include <set>#include <queue>#include <deque>#include <climits>using namespace std;struct book{ string name; int year; int price;};bool compareprice(const book &a,const book &b){ if(a.price!=b.price) return a.price<b.price; else if(a.name!=b.name) return a.name<b.name; else return a.year<b.year;}bool compareyear(const book &a,const book &b){ if(a.year!=b.year) return a.year<b.year; else if(a.name!=b.name) return a.name<b.name; else return a.price<b.price;}int main(){ ifstream cin("atest.txt"); int n; vector<book> v; while(cin>>n) { if(n==0) break; v.clear(); book b; string sorting; for(int i=0;i<n;i++) { cin>>b.name>>b.year>>b.price; v.push_back(b); } cin>>sorting; if(sorting=="year") sort(v.begin(),v.end(),compareyear); if(sorting=="price") sort(v.begin(),v.end(),compareprice); for(int i=0;i<n;i++) cout<<v[i].name<<" "<<v[i].year<<" "<<v[i].price<<endl; cout<<endl; }}