Для сортировки списка, есть ли способ иметь несколько перегрузок операторов с одинаковыми аргументами? - PullRequest
1 голос
/ 23 апреля 2019

Сводка

У меня есть std :: список типа Process *

class Process
{
// non essential stuff

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

Я хочу перегрузить оператор <для сортировки моего списка через list :: sort () </p>

bool operator<(Process const& p) {return this.priority < p.priority}
bool operator<(Process const& p) {return this.burstTime < p.burstTime}
// etc.

Вышесказанное кажется невозможным, поскольку невозможно определить разницу между ними (или я на правильном пути?).

Что я пробовал

Iмы пробовали что-то вроде

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

, где k - это просто любой тип данных / ожидаемое значение, которое сообщает, какую перегрузку использовать, но это невозможно, поскольку <перегрузки принимают только один аргумент.</p>

Надеюсь, теперь вы можете видеть, что я пытаюсь сделать.Есть ли процедура C ++ для этого, о которой я не знаю?Я относительно новый программист на C ++, поэтому прошу прощения, если это легко исправить.

1 Ответ

1 голос
/ 24 апреля 2019

Решено с помощью комментария Borgleader:

сортировка std :: list может принимать функцию сравнения / функтор, вы должны использовать ее вместо этого (это также верно для std :: sort)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...