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;
}

测试结果: