给vector写一个快速排序,vector中装的是自定义结构体
时间: 2024-05-04 12:21:15 浏览: 15
好的,以下是一个使用快速排序算法对vector中自定义结构体进行排序的示例代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
struct MyStruct {
int id;
std::string name;
};
bool operator<(const MyStruct& s1, const MyStruct& s2) {
return s1.id < s2.id;
}
void quickSort(std::vector<MyStruct>& v, int left, int right) {
if (left >= right) {
return;
}
int pivot = v[(left + right) / 2].id;
int i = left - 1;
int j = right + 1;
while (i < j) {
do {
i++;
} while (v[i].id < pivot);
do {
j--;
} while (v[j].id > pivot);
if (i < j) {
std::swap(v[i], v[j]);
}
}
quickSort(v, left, j);
quickSort(v, j + 1, right);
}
int main() {
std::vector<MyStruct> v{{3, "C"}, {1, "A"}, {4, "D"}, {2, "B"}};
quickSort(v, 0, v.size() - 1);
for (const auto& s : v) {
std::cout << s.id << " " << s.name << std::endl;
}
return 0;
}
```
在自定义结构体中,我们需要重载小于运算符,以便在排序时可以比较结构体的id属性。快速排序算法的实现跟普通数组的排序类似,不同的是需要在交换元素时使用vector的成员函数std::swap。