对于列表排序,是否有一种方法可以使具有相同参数的多个运算符重载?

时间:2019-04-22 22:51:51

标签: c++ list sorting operator-overloading

摘要

我有一个类型为Process *的std :: list

class Process
{
// non essential stuff

// vars I want to sort by
int pid;
int burstTime;
int rBurstTime;
int priority;
}

我想重载<运算符,以便通过list :: sort()

对列表进行排序
bool operator<(Process const& p) {return this.priority < p.priority}
bool operator<(Process const& p) {return this.burstTime < p.burstTime}
// etc.

由于无法确定两者之间的差异(或者我走在正确的轨道上吗?),因此上述操作似乎是不可能的。

我尝试过的

我尝试过类似的事情

bool operator<(Process const& p, <k>) {return this.priority < p.priority}

其中k只是告诉使用哪个重载的任何数据类型/期望值,但这是不可能的,因为<重载仅采用一个参数。

希望现在您可以看到我正在尝试做的事情。我不知道有没有为此的C ++程序?我是一个相对较新的C ++程序员,所以很抱歉,对此道歉。

1 个答案:

答案 0 :(得分:1)

通过Borgleader的评论解决:

std :: list的排序可以使用比较函数/功能,您应该改用它(std :: sort也是如此)