Heapsort структуры

Я пытаюсь реализовать heapsort в C ++, который будет принимать структуру из двух целых чисел и сортировать их в лексикографическом порядке. Тем не менее, Visual Studio бросает в меня кучу ошибок, как

Error   8   error C2784: 'bool std::operator <(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &)' : could not deduce template argument for 'const std::_Revranit<_RanIt,_Base> &' from 'const lol'

Я действительно не знаю, что это значит, но я думаю, что что-то не так в самой декларации. Я сделал это:

struct lol {
int num1;
int num2;
};

И я объявил priority_queue так:

priority_queue<lol> q;

0

Решение

Тип lol нужен operator< функционировать так, чтобы priority_queue умеет их сортировать. Компилятор не предоставляет один по умолчанию. Есть несколько вариантов.

Чтобы получить код для компиляции без изменения объявления priority_queue<lol> q; вам нужно будет предоставить оператору. Вы можете объявить это как свободную функцию. Вот пример; при условии, что вы сортируете lol структура на основе num1 поле (не уверен, как ты на самом деле хочу сделать это).

bool operator< (const lol &left, const lol &right) {
return left.num1 < right.num1;
}

Обратите внимание, если num1 был частным, вам нужно сделать оператора другом lol,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]