以下是一个示例代码,演示如何按照一种属性类型对结构体数组进行排序,然后再按另一属性按字母顺序进行排序。假设结构体包含属性name和age。
#include
#include
#include
#include
struct Person {
std::string name;
int age;
};
// 自定义排序比较函数,首先按照age属性进行排序,如果age相同则按照name属性进行字母顺序排序
bool comparePerson(const Person& p1, const Person& p2) {
if (p1.age < p2.age)
return true;
else if (p1.age == p2.age)
return p1.name < p2.name;
else
return false;
}
int main() {
std::vector people = {{"Alice", 30}, {"Bob", 25}, {"David", 35}, {"Charlie", 25}, {"Eve", 30}};
// 使用自定义的comparePerson函数进行排序
std::sort(people.begin(), people.end(), comparePerson);
// 打印排序后的结果
for (const auto& person : people) {
std::cout << "Name: " << person.name << ", Age: " << person.age << std::endl;
}
return 0;
}
输出结果如下:
Name: Bob, Age: 25
Name: Charlie, Age: 25
Name: Alice, Age: 30
Name: Eve, Age: 30
Name: David, Age: 35
注意,这只是一个示例,你可以根据具体的需求来修改结构体和排序比较函数。