这里可以用逻辑组合,写个Rule就好了。


#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct T { int h, m, s; }a[5010];
bool Rule(const T& lhs, const T& rhs) {
    return lhs.h < rhs.h ||(lhs.h == rhs.h && lhs.m < rhs.m) || 
        (lhs.h == rhs.h && lhs.m == rhs.m && lhs.s < rhs.s);
}
int main() {
    int n;
    scanf("%d", &n);
    for (int i = 0; i < n; ++i) {
        scanf("%d %d %d", &a[i].h, &a[i].m, &a[i].s);
    }
    sort(a, a + n, Rule);
    for (int i = 0; i < n; ++i) {
        printf("%d %d %d\n", a[i].h, a[i].m, a[i].s);
    }
}