simular programacion priority prioridad ejemplos con colas cola clase banco ats c++ stl priority-queue std-pair

c++ - programacion - Emparejar dentro de la cola de prioridad



programacion ats colas (2)

Estoy intentando almacenar pares en la cola de prioridad y estoy usando una función de comparación que compara el segundo valor de cada par.

#include<iostream> #include<queue> #include<utility> using namespace std; class CompareDist { public: bool operator()(pair<int,int> n1,pair<int,int> n2) { return n1.second>n2.second; } }; int main() { priority_queue<pair<int,int>,CompareDist> pq; }

Cuando compilo esto me sale un error

error: no type named ‘value_type’ in ‘class CompareDist’

Cuál podría ser la razón. Soy nuevo en STL.


Este es el aspecto de la priority_queue :

template< class T, class Container = std::vector<T>, class Compare = std::less<typename Container::value_type> > class priority_queue;

En otras palabras, CompareDist debe ser el tercer argumento y el segundo argumento debe ser el contenedor (que tiene value_type ), como el siguiente:

priority_queue<pair<int,int>,vector<pair<int,int>>,CompareDist> pq;

Tenga en cuenta también que la priority_queue es lo que se denomina un "adaptador de contenedor". Otro contenedor se utiliza como el contenedor subyacente y la priority_queue tiene funciones especiales de miembros para acceder a él. Otro ejemplo de un adaptador de contenedor sería std :: stack.


priority_queue<pair<int,int>,vector<pair<int,int>>,CompareDist> pq;

debe proporcionar un segundo argumento para la plantilla incorporada de priority_queue.