sort对结构体vector排序
时间: 2024-09-13 17:16:08 浏览: 18
在C++中,对结构体的`vector`进行排序通常需要使用`sort`函数,该函数定义在`<algorithm>`头文件中。为了实现排序,你需要提供一个比较函数或者重载`operator<`来定义排序的依据。以下是使用结构体`vector`进行排序的基本步骤:
1. 定义结构体:首先定义你需要排序的结构体类型,其中包含需要进行比较的成员变量。
```cpp
struct MyStruct {
int key; // 用于排序的键值
// 可能还包含其他成员变量
};
```
2. 创建`vector`:创建一个该结构体类型的`vector`,并填充数据。
```cpp
std::vector<MyStruct> vec;
// 填充vec,例如:
// vec.push_back({5, ...});
// vec.push_back({1, ...});
// ...
```
3. 使用`sort`函数:使用`std::sort`函数进行排序,你可以选择提供一个自定义的比较函数或者重载`operator<`。
- 使用自定义比较函数:
```cpp
bool compareFunction(const MyStruct& a, const MyStruct& b) {
// 返回a的键值小于b的键值
return a.key < b.key;
}
std::sort(vec.begin(), vec.end(), compareFunction);
```
- 重载`operator<`:
```cpp
bool MyStruct::operator<(const MyStruct& other) const {
return this->key < other.key;
}
std::sort(vec.begin(), vec.end());
```
在使用`sort`函数进行排序时,默认按照升序排序,如果需要按照降序排序,可以使用`std::greater<T>`作为第三个参数。
```cpp
std::sort(vec.begin(), vec.end(), std::greater<MyStruct>());
```