在C++中,可以使用std::sort
函数结合自定义的比较函数对多关键字进行排序。以下是一个示例代码,演示如何根据两个关键字对结构体进行排序:
#include <iostream>
#include <vector>
#include <algorithm>
struct Item {
int firstKey;
int secondKey;
std::string name;
};
// 自定义比较函数,先按第一关键字升序排列,若相等则按第二关键字降序排列
bool compareKeys(const Item& a, const Item& b) {
return std::tie(a.firstKey, a.secondKey) < std::tie(b.firstKey, b.secondKey);
}
int main() {
std::vector<Item> items = {
{1, 3, "Item1"},
{1, 2, "Item2"},
{2, 1, "Item3"},
{2, 2, "Item4"}
};
std::sort(items.begin(), items.end(), compareKeys);
// 打印排序结果
for (const auto& item : items) {
std::cout << item.name << ": " << item.firstKey << ", " << item.secondKey << std::endl;
}
return 0;
}
这段代码定义了一个Item
结构体,并实现了一个compareKeys
函数,用于比较两个Item
对象的两个关键字。std::sort
使用这个比较函数对items
进行排序。最终,程序会按照第一关键字升序,第一关键字相同的情况下按第二关键字降序输出排序结果。