sort函数定义在<algorithm>库中,可以看做是qsort(包含在<stdlib.h>头文件中,具体使用在此就不介绍了)的拓展版,是STL的组成部分,针对不同的情况,对排序有不同的策略,平均效率很好,综合效率高于qsort(单一的快排)
sort的用法方便简单。
一、首先,先拿简单的数组排序为例:
int arr[100];
若要完成从小到大排序
sort(arr, arr+100);
即可~
若完成从大到小排序,可以定义cmp函数如下:
int cmp(int a, int b)
{
return a > b; //不可加等号,若加上等号,在数组前两个数字相等的情况下,将出现内存访问错误
//具体为何,有待dbg源码,坐等高人回复 ^_^
}
sort(arr, arr+100, cmp);
即可~
二、若排序的对象是容器呢?没问题,sort函数照样能用
以vector容器为例~
定义比较函数:
注:此比较函数实质上是一个类结构,只是重载了操作符()
class Tst
{
public:
int number;
}
class CMP
{
public:
bool operator()(Tst a, Tst b)
return a.number < b.number;
};
vector<Tst> vecTst;
CMP cmp;
//blablabla~~~
sort(vecTst.begin(), vecTst.end(), cmp);
大功告成!