关于sort函数在结构体的应用

sort函数是c++里面的库函数,是快速排序的模板,使用的时候必须加上头文件#include<algorithm>

一般的模板是sort(首元素地址,尾元素地址,比较函数)

我们这里主要讲在结构体中怎样使用

比如说有一个结构体:

struct MyStruct
{
	int sum;
	int chin;
	int math;
	int eng;
	int num;
}ff[s];

我们的要求是先进行sum的大小比较,sum大的排在前面,如果相等,那么继续比较chin,大的排在前面,同样如果chin相等的话,在比较num的大小,num小的排在前面

那么我们就可以根据要求写出比较函数cmp:

bool cmp(const MyStruct &a, const MyStruct &b)
{
	if (a.sum > b.sum)
		return 1;
	else if (a.sum < b.sum)
		return 0;
	else
	{
		if (a.chin > b.chin)
			return 1;
		else if (a.chin < b.chin)
			return 0;
		else
		{
			if (a.num < b.num)
				return 1;
			else
				return 0;
		}
	}
}

那么我们就可以这样调用sort函数:

sort(ff + 1, ff + n + 1, cmp);

所以我们需要的排序方法都可以根据cmp函数的编写来定制



另外,如果是vector类型的数组的话,那么就必须

sort(arr.begin(),arr.begin+n,cmp)

才能编译成功

猜你喜欢

转载自blog.csdn.net/scwmason/article/details/80787362