sort函数对结构体排序,如果结点a相等,比较结点b ,以从小到大 为例:
struct node{
int num;
int data;
}c[100];
对于上述定义的结构体可以添加一个自定义cmp函数来实现结构体的排序:
写法1:
bool cmp(node a,node b)
{
if(a.t!=b.t) return a.t<b.t;
else return a.s<b.s;
}
写法2: bool cmp(node a,node b)
{
if(a.num<b.num)
{
return true;
}
else
if(a.num==b.num)
{
if(a.data<b.data)
{
return true ;
}
}
return false ;
}
测试:
#include<iostream>
#include<algorithm>
using namespace std;
struct node{
int num;
int data;
}c[100];
//写法1:
//bool cmp(node a,node b)
//{
// if(a.t!=b.t) return a.t<b.t;
// else return a.s<b.s;
//}
//写法2:
bool cmp(node a,node b)
{ //sort函数的结构体排序,从小到大 。
if(a.num<b.num)
{
return true;
}
else
if(a.num==b.num)
{
if(a.data<b.data)
{
return true ;
}
}
return false ;
}
int main()
{
int n,k;
cin>>n;
for(int i=0;i<n;i++)
{//输入node
cin>>c[i].num>>c[i].data;
}
sort(c,c+n,cmp);
cout<<"排序后为:"<<endl;
for(int i=0;i<n;i++)
{
cout<<c[i].num<<" "<<c[i].data<<endl;
}
return 0;
}
测试结果: