STL中sort的应用

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

 

大功告成!

STL中sort的应用

上一篇:Android sdk content loader 0%的解决方案


下一篇:HDU 2018 母牛的故事