轻松修复 - 对多个值的 deque 进行排序
Easy fix - sorting a deque on multiple values
我试图弄清楚如何在两个值上对结构体进行排序,而不仅仅是一个。 我拥有的代码是我所拥有的完美排序arrival
,但如果两个项目具有相同的pid
,我希望它们也按 pid 顺序排列。 我希望我说得有道理!
例如:
pid
为 1 且arrival
为 10 的进程应该在pid
为 2 且arrival
为 10 的进程之前,即使具有 pid
1 的进程最初出现在双进程中。
struct Process{
int pid;
int burst;
int arrival;
};
int sortOnArrival (Process const &a, Process const &b){
return a.arrival < b.arrival;
}
int main(int argc, char *argv[]){
deque<Process> readyQueue;
// This is just pseudocode, but trust me, it works. :)
fill(readyQueue);
sort(readyQueue.begin(), readyQueue.end(), sortOnArrival);
}
只需使用合适的比较对象即可。例如,您可以使用
struct sortOnPidAndArrival {
bool operator()(Process const& p0, Process const& p1) const {
return std::tie(p0.pid, p0.arrival) < std::tie(p1.pid, p1.arrival);
}
};
如果您想知道为什么我使用函数对象而不是函数指针:此函数对象中的代码可以完全内联。通过函数指针进行的调用不能。
比较函数需要考虑比较的所有要求。
int sortOnArrival (Process const &a, Process const &b) {
if( a.arrival == b.arrival ) return a.pid < b.pid;
return a.arrival < b.arrival;
}
相关文章:
- 二叉排序树无法编译
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- C++选择排序算法中的逻辑错误
- 使用C++程序合并排序没有得到正确的输出
- 计算排序向量的向量中唯一值的计数
- 排序算法c++
- 使用2个键的cpp-stl::优先级队列排序不正确
- 将结构向量排序为子组
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 如何对点云数据进行排序
- 对字符串进行排序时,在c++中处理sort()
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- 下面是排序算法O(n)吗
- std::sort()函数无法对向量的一部分进行排序
- shell排序中的交换和比较
- 轻松修复 - 对多个值的 deque 进行排序
- 排序存储在Deque中的类对象
- 对包含结构的deque进行排序
- 使用类对象对deque进行排序
- 递归合并排序为 c++ 中使用 deque 的迭代