Как предварительно выделить память для приоритетной очереди?

В настоящее время я пытаюсь реализовать это решение:
https://stackoverflow.com/a/29236236/8882282
И у меня нет проблем, когда я использую меньше<> (), но их много в любых других случаях (больше, мой собственный компаратор).
Например:

std::vector<long long int> container;
container.reserve(dimension);
std::priority_queue<long long int, std::vector<long long int>> queue(std::greater<long long int>(), std::move(container));

«Нет подходящего конструктора»
У тебя есть идеи?

2

Решение

Компаратор по умолчанию для std::priority_queue является std::less, Вы проходите в std::greater компаратор для конструктора.

Это разные, совершенно не связанные классы. Это твоя ошибка.

Вы должны явно объявить свою очередь приоритетов, как таковую:

std::priority_queue<long long int,
std::vector<long long int>,
std::greater<long long int>>
queue(std::greater<long long int>(),
std::move(container));
2

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector