sort自定义cmp函数
时间: 2024-06-08 10:07:56 浏览: 118
在使用sort函数时,可以通过自定义cmp函数来指定排序规则。cmp函数接受两个参数,表示需要比较的两个元素,返回值为bool类型。如果返回值为true,则表示第一个元素应该排在第二个元素之前,否则第一个元素应该排在第二个元素之后。
下面是一个例子,对一个包含多个学生信息的vector进行按照姓名字典序升序排序:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Student {
string name;
int age;
double score;
};
bool cmp(const Student& a, const Student& b) {
return a.name < b.name;
}
int main() {
vector<Student> stuList = {
{"Tom", 18, 89.5},
{"Alice", 19, 90.0},
{"Bob", 20, 88.0},
};
sort(stuList.begin(), stuList.end(), cmp);
for (const auto& stu : stuList) {
cout << "name: " << stu.name << ", age: " << stu.age << ", score: " << stu.score << endl;
}
return 0;
}
```
输出结果为:
```
name: Alice, age: 19, score: 90
name: Bob, age: 20, score: 88
name: Tom, age: 18, score: 89.5
```
在cmp函数中,我们定义了按照学生姓名的字典序升序排序规则。sort函数会根据这个规则对vector中的元素进行排序。