c++ sort cmp
时间: 2023-07-23 17:57:08 浏览: 162
在C++中,sort函数的compare函数(cmp)是用于自定义排序规则的。它是一个可选的参数,用于指定排序时的比较方式。比较函数接受两个参数,并返回一个bool值,表示第一个参数是否小于第二个参数。
以下是一个示例,展示如何使用cmp函数来排序一个整数数组:
```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, 3};
int n = sizeof(arr) / sizeof(arr[0]);
sort(arr, arr + n, cmp);
cout << "排序后的数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
上述代码中,cmp函数定义了降序排序的规则。sort函数根据这个规则对数组进行排序。最终输出的结果将会是:9 5 3 2 1。
你可以根据自己的需求编写不同的cmp函数来实现不同的排序规则。
相关问题
C++ sort cmp
C++中的sort函数可以用来对数组进行排序,其中cmp是一个可选的参数,用于指定排序的方式。如果不指定cmp,则默认按照升序排序。如果需要降序排序,则需要自定义cmp函数,该函数返回true表示第一个参数应该排在第二个参数之前,返回false则表示第一个参数应该排在第二个参数之后。在自定义cmp函数中,可以使用>、<等符号来进行比较。
c++sortcmp
### C++ 中 `sort` 和自定义比较函数的使用
在 C++ 的标准库中,`std::sort` 是一个非常高效的排序算法。默认情况下,它按照升序排列容器中的元素。然而,在实际应用中,可能需要根据特定条件来定制排序逻辑。
对于自定义类型的对象或者当希望改变默认排序顺序时,则可以提供第三个参数作为比较器[^1]:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // std::sort 所需头文件
struct Person {
std::string name;
int age;
bool operator<(const Person& other) const { // 定义小于运算符重载
return this->age < other.age;
}
};
int main() {
std::vector<Person> people = {{"Alice", 30}, {"Bob", 25}, {"Charlie", 35}};
// 使用成员函数指针方式指定比较规则
std::sort(people.begin(), people.end(), [](const Person &lhs, const Person &rhs){
return lhs.name < rhs.name; // 按名字字典序排序
});
for (auto &&p : people) {
std::cout << p.name << ": " << p.age << "\n";
}
return 0;
}
```
上述代码展示了如何通过 lambda 表达式向 `std::sort` 提供自定义的比较函数。这里选择了按姓名字母顺序而不是年龄大小来进行排序。
需要注意的是,如果要对基本数据类型(如整数、浮点数等)进行降序或其他特殊形式的排序,也可以采用类似的手段传递相应的谓词给 `std::sort` 函数。
阅读全文
相关推荐














