C++ sort函数cmp
时间: 2023-11-14 15:07:32 浏览: 105
C++中的sort函数可以通过传入一个自定义的比较函数cmp来实现按照特定规则排序。cmp函数需要返回一个bool类型的值,表示两个元素的大小关系。
如果cmp返回true,则表示第一个元素应该排在第二个元素之前;如果cmp返回false,则表示第一个元素应该排在第二个元素之后。
下面是一个例子,演示如何使用cmp函数对一个整数数组进行降序排序:
```cpp
bool cmp(int a, int b) {
return a > b;
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int n = sizeof(arr) / sizeof(int);
sort(arr, arr + n, cmp);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:9 6 5 5 5 4 3 3 2 1 1
相关问题
c++ sort函数的cmp
在C++中,sort函数是用来对指定区间的元素进行排序的函数。它的原型为:
void sort( iterator start, iterator end, StrictWeakOrdering cmp );
其中,cmp是一个比较函数,用来定义元素的排序规则。在调用sort函数时,我们可以根据自己的需求编写cmp函数,来决定元素的排序逻辑和比较方式。
cmp函数的命名可以根据个人喜好来确定,但一般建议命名具有描述性,并能反映出排序规则的名称,以提高代码的可读性。
下面是一个示例代码,演示了如何使用sort函数和自定义的cmp函数对Book结构体数组进行排序:
#include <algorithm>
#include <iostream>
using namespace std;
typedef struct {
string book;
int num;
} Book;
// sort的比较函数
bool cmp(Book a, Book b) {
return a.num > b.num;
}
int main() {
Book Bok = {{"book1", 5}, {"book2", 3}, {"book3", 8}};
sort(Bok, Bok + 3, cmp); // 使用cmp函数进行排序
for (int i = 0; i < 3; i++) {
cout << Bok[i].book << " " << Bok[i].num << endl;
}
return 0;
}
输出结果为:
book3 8
book1 5
book2 3
c++中sort函数cmp的写法
在C++标准库中的`std::sort`函数是用来对容器中的元素进行排序的,它通常接受一个比较函数作为第三个参数,这个函数被称为`comparison function`或`cmp`。这个函数负责定义元素间的比较规则,决定哪些元素应该排在前面。
`cmp`的典型写法是一个接受两个参数(通常是容器中的元素类型)并返回一个整数类型的函数。如果第一个参数应当排在第二个之前,函数应返回负数;若两个相等,返回0;如果第一个应在后面,返回正数。例如,对于自增顺序,可以这样编写:
```cpp
bool compare(int a, int b) {
return a < b; // 升序排列
}
// 或者如果是降序排列
bool compareDesc(int a, int b) {
return a > b;
}
void sortArray(std::vector<int>& arr) {
std::sort(arr.begin(), arr.end(), compare); // 升序排序
// 或者
std::sort(arr.begin(), arr.end(), compareDesc); // 降序排序
}
```
阅读全文