📅  最后修改于: 2023-12-03 15:27:10.644000             🧑  作者: Mango
在 C++ 中,STL (标准模板库) 提供了多种用于排序的工具,方便程序员进行排序操作。以下是其中几个重要的排序工具。
sort
函数是 STL 提供的一个排序工具。它可以快速地对一个数组或容器进行排序操作。sort
函数的一般形式如下:
sort(begin, end [, cmp]);
其中,begin
和 end
是输入的迭代器范围,表示需要进行排序的数据范围。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
函数也是 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 工具的一些基本方法。使用这些工具,可以方便地对数组、容器等数据进行排序操作。需要注意的是,在实际使用中,还需根据不同的应用场景进行选择,以达到更好的排序效果。