📜  用于在 C++ 中排序的 stl(1)

📅  最后修改于: 2023-12-03 15:27:10.644000             🧑  作者: Mango

用于在 C++ 中排序的 STL

在 C++ 中,STL (标准模板库) 提供了多种用于排序的工具,方便程序员进行排序操作。以下是其中几个重要的排序工具。

sort 函数

sort 函数是 STL 提供的一个排序工具。它可以快速地对一个数组或容器进行排序操作。sort 函数的一般形式如下:

sort(begin, end [, cmp]);

其中,beginend 是输入的迭代器范围,表示需要进行排序的数据范围。cmp 是可选的参数,表示排序时所使用的比较函数(默认为 less 函数)。

下面是给数组排序的一个例子:

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
  int arr[] = {4, 1, 6, 2, 8, 3};
  int n = sizeof(arr) / sizeof(arr[0]);
  
  sort(arr, arr+n);

  for(int i=0; i<n; i++) {
    cout << arr[i] << " ";
  }
  cout << endl;

  return 0;
}

输出:

1 2 3 4 6 8 

在这个例子中,我们使用 sort 函数对数组进行排序。由于没有指定比较函数,sort 函数使用的是默认的比较函数 less。这个比较函数会按照元素大小进行升序排序。

stable_sort 函数

stable_sort 函数也是 STL 提供的一个排序工具。它与 sort 函数类似,但不同的是它能够保证排序后元素的原始顺序不变。stable_sort 函数的一般形式如下:

stable_sort(begin, end [, cmp]);

下面是给容器排序的一个例子:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main() {
  vector<int> v = {4, 1, 6, 2, 8, 3};

  stable_sort(v.begin(), v.end());

  for(int i=0; i<v.size(); i++) {
    cout << v[i] << " ";
  }
  cout << endl;

  return 0;
}

输出:

1 2 3 4 6 8 

在这个例子中,我们使用 stable_sort 函数对 vector 进行排序。由于没有指定比较函数,stable_sort 函数使用的是默认的比较函数 less。这个比较函数会按照元素大小进行升序排序。

自定义比较函数

上面两个例子中,我们都使用了默认的比较函数 less。但是,有时候我们需要对某些不同类型的元素进行排序,或者按照不同的方式对元素进行排序。这时,我们可以自定义比较函数来实现。以下是一个自定义比较函数的例子:

bool cmp(int a, int b) {
  return a > b;
}

这个比较函数会按照元素大小进行降序排序。

下面是一个使用自定义比较函数的例子:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

bool cmp(int a, int b) {
  return a > b;
}

int main() {
  vector<int> v = {4, 1, 6, 2, 8, 3};

  sort(v.begin(), v.end(), cmp);

  for(int i=0; i<v.size(); i++) {
    cout << v[i] << " ";
  }
  cout << endl;

  return 0;
}

输出:

8 6 4 3 2 1 

在这个例子中,我们使用 sort 函数和自定义比较函数 cmp 对 vector 进行排序。比较函数 cmp 会按照元素大小进行降序排序。

结语

以上是介绍在 C++ 中排序的 STL 工具的一些基本方法。使用这些工具,可以方便地对数组、容器等数据进行排序操作。需要注意的是,在实际使用中,还需根据不同的应用场景进行选择,以达到更好的排序效果。