思路就是建立一个结构体,然后自己定义一个排序方式,用sort排序一下即可。
但我不清楚我哪里错了。
#include <bits/stdc++.h>
using namespace std;
struct Point
{
string name;
string tm;
string vm;
string source;
Point(){}
Point(string n_,string tm_,string vm_,string s_)
{
name=n_;
tm=tm_;
vm=vm_;
source=s_;
}
}p[10007];
bool cmp(Point a,Point b)
{
if(a.vm==b.vm) return a.tm<b.tm;
else return a.vm<b.vm;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
string s;
int k=0;
int cnt=0;
// string tmp1="2007-01-17 19:22:53,315";
// string tmp2="2007-01-17 19:22:53,315";
// cout<<(tmp1==tmp2)<<endl;
// cout<<(tmp1<tmp2)<<endl;
while(getline(cin,s))
{
// cout<<cnt<<endl;
// cnt++;
// if(cnt==10) break;
//int n=s.size();
//cout<<"n "<<n<<endl;
string name,vm;
string tm1,tm2;
istringstream isinput;
isinput.str(s);
isinput>>name>>tm1>>tm2>>vm;
tm1.push_back(' ');
for(auto t:tm2) tm1.push_back(t);
//cout<<name<<" "<<tm1<<" "<<vm<<endl;
p[k] = Point(name,tm1,vm,s);
k++;
// cout<<p[k-1].name<<" "<<p[k-1].tm<<" "<<p[k-1].vm<<endl;
}
sort(p,p+k,cmp);
for(int i=0;i<k;i++)
{
cout<<p[i].source<<endl;
}
return 0;
}