c++知识点多关键字排序

在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进行排序。最终,程序会按照第一关键字升序,第一关键字相同的情况下按第二关键字降序输出排序结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值