STL sort降序
时间: 2024-03-03 19:45:48 浏览: 22
STL(Standard Template Library)是C++标准库中的一个重要组成部分,其中包含了许多常用的数据结构和算法。sort函数是STL中的一个排序算法,用于对容器中的元素进行排序。
要实现降序排序,可以通过自定义比较函数来实现。比较函数需要满足以下条件:
1. 接受两个参数,表示待比较的元素。
2. 返回一个bool值,表示第一个参数是否应该排在第二个参数之前。
下面是一个示例代码,演示如何使用STL的sort函数进行降序排序:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
// 自定义比较函数,实现降序排序
bool compare(int a, int b) {
return a > b;
}
int main() {
std::vector<int> nums = {5, 2, 8, 1, 9};
// 使用sort函数进行降序排序
std::sort(nums.begin(), nums.end(), compare);
// 输出排序结果
for (int num : nums) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
运行以上代码,输出结果为:9 8 5 2 1,即按照降序排列的结果。
相关问题
STL list 自定义排序
STL的list容器是一个双向链表,它不支持随机访问和快速排序。但是我们可以使用自定义的排序规则对list进行排序。下面是一个演示如何在STL的list中进行自定义排序的例子:
```cpp
#include <iostream>
#include <list>
#include <algorithm>
// 自定义排序规则
bool customSort(int a, int b) {
return a > b; // 降序排序
}
int main() {
std::list<int> myList = {5, 2, 8, 1, 9};
// 使用自定义排序规则对list进行排序
myList.sort(customSort);
// 输出排序后的结果
for (int num : myList) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:9 8 5 2 1,即按照降序排序的结果。
sort 函数
sort() 函数是 C++ STL(标准模板库)中的一个函数,用于对数组或容器中的元素进行排序。它可以按照默认的升序排列,也可以通过提供自定义的比较函数来按照其他顺序进行排序。
sort() 函数的语法如下:
```cpp
#include <algorithm>
sort(start_address, end_address, comparator);
```
其中,start_address 和 end_address 分别表示要排序的元素区间的起始地址和终止地址(注意,这里的终止地址实际上是指最后一个元素的下一个地址),comparator 是可选参数,表示自定义的比较函数。
如果不提供 comparator,sort() 函数将按照默认的升序排列元素。
下面是一个例子:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a, int b) {
return a > b; // 自定义比较函数,按照降序排列
}
int main() {
int arr[] = {5, 2, 9, 1, 5, 6};
int n = sizeof(arr) / sizeof(arr[0]);
sort(arr, arr + n);
cout << "升序排列:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
sort(arr, arr + n, cmp);
cout << "降序排列:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
输出:
```
升序排列:1 2 5 5 6 9
降序排列:9 6 5 5 2 1
```
在这个例子中,我们首先定义了一个自定义的比较函数 cmp(),然后分别用 sort() 函数来对一个整型数组进行升序和降序排列。注意,在排序时我们需要传入数组的起始地址和终止地址,而不是数组本身。