Ответ 1
Вот что выглядит priority_queue:
template<
class T,
class Container = std::vector<T>,
class Compare = std::less<typename Container::value_type>
> class priority_queue;
Другими словами, CompareDist
должен быть третьим аргументом, а вторым аргументом должен быть контейнер (который имеет value_type
), как value_type
ниже:
priority_queue<pair<int,int>,vector<pair<int,int>>,CompareDist> pq;
Также обратите внимание, что priority_queue
- это так называемый "контейнерный адаптер". В качестве основного контейнера используется другой контейнер, а функция priority_queue имеет специальные функции для доступа к нему. Другим примером адаптера контейнера будет std :: stack.