[C++ Primer] C++中sort对类对象进行排序

    使用C++进行编程时,常常需要对处理对象进行排序,因此C++中提供了sort范型算法。

1 sort的原型

template 
  void sort (RandomAccessIterator first, RandomAccessIterator last);

template 
  void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
上面是两个范型算法的模板。

第一个函数有两个参数,分别是随机访问迭代器first和last,它默认使用迭代器引用的operator<进行排序。

第二个函数有三个参数,前两个和第一个一样,第三个参数是一个Compare,也就是说它使用comp对迭代器引用的对象进行排序。

comp是一个二元函数,它接受前两个参数指定范围内的两个元素,它的返回值可以转换为bool类型,这个函数不改变迭代器引用的对象,而且,它可以是函数指针和函数对象。

需要注意的是,这两个排序函数不是稳定的,稳定的排序可以看看stable_sort。


2 一个对整数进行排序的简单例子

#include 
#include 
#include 
using namespace std;

int cmp_func(int a, int b)
{
    if(a > b)
        return true;
    return false;
}

void print_res(int x)
{
   cout << x << " ";
}

int main(int argc, char *argv[])
{
    int arr[] = {6, 4, 8, 2, 1};
    int len = sizeof(arr) / sizeof(arr[0]);
    vector ivec(arr, arr + len);

    sort(ivec.begin(), ivec.end());
    for_each

你可能感兴趣的:(c++)