vector的sort自定义排序
时间: 2023-10-15 09:27:41 浏览: 129
要对一个 vector 进行自定义排序,可以使用 `std::sort` 函数并提供一个自定义的比较函数作为第三个参数。比较函数应该接受两个参数,并返回一个布尔值,用于指示两个元素的顺序关系。
下面是一个示例,展示如何对一个存储了自定义结构体的 vector 进行排序:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
struct MyStruct {
int id;
std::string name;
};
bool compareById(const MyStruct& a, const MyStruct& b) {
return a.id < b.id;
}
int main() {
std::vector<MyStruct> structs = {
{3, "Charlie"},
{1, "Alice"},
{2, "Bob"}
};
std::sort(structs.begin(), structs.end(), compareById);
for (const auto& s : structs) {
std::cout << s.id << ": " << s.name << std::endl;
}
return 0;
}
```
在上面的代码中,`compareById` 函数用于比较两个 `MyStruct` 结构体对象的 `id` 字段。通过将这个函数作为第三个参数传递给 `std::sort`,我们可以根据 `id` 字段对结构体进行排序。
输出将是:
```
1: Alice
2: Bob
3: Charlie
```
你可以根据自己的需求编写不同的比较函数来实现不同的排序方式。
阅读全文