You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何实现Task结构体对象集合按urgency字段值排序

C++任务列表按urgency排序实现方法

你可以直接使用C++ STL提供的排序工具实现需求,具体操作步骤如下:

  1. 引入排序依赖头文件
    在代码的头文件引入部分新增一行:
#include <algorithm>
  1. 修改Task结构体的getUrgency方法
    给方法加上const修饰,保证常量对象可以正常调用该方法:
int getUrgency() const {
    urgency = ceil(deadline - estimated);
    return urgency;
}
  1. 实现排序逻辑
    你可以选择两种写法实现排序:
  • 写法一:单独定义比较函数
    先在全局范围定义任务比较规则:
// 按urgency升序排序,需要降序的话把 < 改成 > 即可
bool compareTask(const Task& a, const Task& b) {
    return a.getUrgency() < b.getUrgency();
}

之后在main函数的printAll调用前,给存储任务的vector排序:

std::sort(p.begin(), p.end(), compareTask);

如果要给你代码中声明的list容器排序,因为list不支持随机访问,要用list自带的sort方法:

// 先把vector的元素导入list
taskList.assign(p.begin(), p.end());
// 调用list自带的排序方法
taskList.sort(compareTask);
  • 写法二:使用lambda表达式(无需单独定义比较函数,更简洁)
    直接在main函数需要排序的位置写如下代码即可:
// 给vector排序
std::sort(p.begin(), p.end(), [](const Task& a, const Task& b) {
    return a.getUrgency() < b.getUrgency();
});

// 如果是给list排序就用下面的代码
// taskList.assign(p.begin(), p.end());
// taskList.sort([](const Task& a, const Task& b) { return a.getUrgency() < b.getUrgency(); });

修改完成后再调用printAll,输出的就是按urgency排序后的任务列表。

内容的提问来源于stack exchange,提问作者athanasia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:45:02