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.