Я пытаюсь реализовать кучу минут в C++ для типа структуры, который я создал. Я создал вектор типа, но он разбился, когда я использовал make_heap на нем, что понятно, потому что он не знает, как сравнивать элементы в куче. Как создать мини-кучу (то есть, верхний элемент всегда самый маленький в куче) для типа структуры?C++ min heap с пользовательским типом
структура ниже:
struct DOC{
int docid;
double rank;
};
Я хочу, чтобы сравнить DOC структуры с использованием элемента ранга. Как мне это сделать?
Я попытался использовать очередь приоритетов со классом-компаратором, но это также разбилось, и также кажется глупым использовать структуру данных, которая использует кучу в качестве ее базовой основы, когда мне действительно нужна куча в любом случае.
Большое спасибо, BSG
Какое у вас определение «он разбился»? Разумеется, если у вас нет функции сравнения или оператора
sellibitze
Нет, на самом деле я этого не делал. Определенно не с приоритетной очередью, в которой был задан перегруженный оператор, и я тоже не думаю с помощью make_heap. Хотя это может быть так, что в последнем случае я получил ошибку компиляции. В первый раз, однако, он скомпилировался отлично, но разбился во время выполнения. – bsg
Если вы попытаетесь использовать make_heap только с двумя аргументами, вам нужно иметь оператор <для вашего типа структуры. Если вы этого не сделаете, вы получите ошибки компиляции. Просто как тот. – sellibitze