C++ 在结构类型的数组上使用排序函数

C++ use sort function on a struct type of array

#include<bits/stdc++.h>
using namespace std;
ifstream f ("date.in");
ofstream g ("date.out");
int v[10001],maxi,i,maxi1,n,k,mini=INT_MAX,j;
struct interval
{
    int stg,dr;
} x,a[10001];
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>x.stg>>x.dr;
        a[i].stg=x.stg;
        a[i].dr=x.dr;
        v[x.stg]++;
        v[x.dr]-=1;
        if(maxi<x.dr)
            maxi=x.dr;
    }
    for(i=1;i<=maxi;i++)
        v[i]+=v[i-1];
    for(i=1;i<=maxi;i++)
    {
        if(v[i]>maxi1)
        maxi1=v[i];
    }
    g<<maxi1<<'\n';
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        if(a[i].stg<a[j].stg)
        {
            swap(a[i].stg,a[j].stg);
            swap(a[i].dr,a[j].dr);
        }
    for(i=1;i<=n;i++)
    for(j=i;j<=n;j++)
    if(a[i].dr<a[j].stg)
    {
        k++;
        g<<a[i].stg<<" "<<a[i].dr;
        g<<'\n';
        i=j;
    }
    if(a[n].stg>a[k].dr)
    {
        g<<a[n].stg<<" "<<a[n].dr;
        g<<'\n';
        k++;
    }
    g<<k;

}


所以我的程序运行良好,但我想对其进行优化。我想使用排序函数(不是 qsort)而不是冒泡排序,就像这样排序(a+1,a+n+1,comp),但我不知道如何为这种情况编写 comp 函数。非常感谢您的帮助。

解决方案并不难:

bool cmp( interval a, interval b )
{
   return (a.stg < b.stg && a.dr < b.dr);
}