sort 自定义排序 vector
时间: 2023-09-29 12:11:17 浏览: 84
要对一个 vector 进行自定义排序,需要用到 C++ STL 的 sort 函数。该函数的原型如下:
```c++
template <class RandomAccessIterator>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
```
其中,`first` 和 `last` 分别是 vector 的起始和结束迭代器,`comp` 是比较函数,用于指定排序规则。
比较函数的定义如下:
```c++
bool myCompare(const T &a, const T &b) {
// 自定义比较规则,返回 a 是否应该排在 b 前面
}
```
其中,`T` 是 vector 中元素的类型。比较函数需要返回一个 `bool` 类型的值,表示两个元素之间的顺序。
下面是一个例子,演示如何对一个包含学生信息的 vector 按照成绩从高到低排序:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Student {
string name;
int score;
};
bool myCompare(const Student &a, const Student &b) {
return a.score > b.score;
}
int main() {
vector<Student> v = { {"Alice", 80}, {"Bob", 90}, {"Charlie", 70} };
sort(v.begin(), v.end(), myCompare);
for (auto &s : v) {
cout << s.name << " " << s.score << endl;
}
return 0;
}
```
输出:
```
Bob 90
Alice 80
Charlie 70
```
在上面的例子中,`myCompare` 函数定义了成绩从高到低的排序规则。sort 函数按照该规则对 vector 进行排序后,输出结果符合预期。
阅读全文