Как настроить функцию сравнения std::make_heap на основе некоторой структуры данных?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как настроить функцию сравнения std::make_heap на основе некоторой структуры данных?

Сообщение Anonymous »

Я пытаюсь использовать std::make_heap, который имеет большинство необходимых мне свойств.
У меня есть вектор целых чисел, которые являются просто индексами моей структуры данных, и я хочу, чтобы куча была построена на основе некоторых свойство этой структуры данных.
Если бы я хотел иметь лямбда-функцию для сравнения, это было бы просто:

Код: Выделить всё

[](int x, int y){return elementList[x]->lnc > elementList[y]->lnc;}
Проблема, с которой я столкнулся, заключается в том, что функция сравнения принимает только 2 входных параметра, и я не могу передать ей elementList.
У меня есть два решения. Во-первых, чтобы сохранить указатели в имеющемся у меня векторе. Во-вторых, самому реализовать кучу с нуля.
Есть ли более простое решение?
Обновление: предложение захвата в лямбда-функции (упомянул Брайан) — хороший способ. Есть ли какое-нибудь решение, если я не хочу использовать лямбда-функцию?

Подробнее здесь: https://stackoverflow.com/questions/633 ... -structure
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»