历年上机题-----日志排序

https://www.nowcoder.com/practice/0f64518fea254c0187ccf0ea05019672?tpId=61&tqId=29504&tPage=1&ru=/kaoyan/retest/1002&qru=/ta/pku-kaoyan/question-ranking

思路就是建立一个结构体,然后自己定义一个排序方式,用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;
}
发布了449 篇原创文章 · 获赞 197 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/qq_40774175/article/details/105361500