Questa è la prima volta che utilizzo una coda di priorità. Sto cercando di implementare l'algoritmo di Dijkstra per la scuola e ho pensato di aver bisogno di un mucchio minimo per farlo. In questo momento i miei nodi sono puntatori e voglio confrontare il loro peso, ma non penso di poter sovraccaricare> e < con i puntatori? C'è un modo per farlo?Coda di priorità STL e sovraccarico con puntatori
Codice fino a questo punto:
priority_queue<Node*, vector<Node*>, node_comparison> minHeap;
E poi ho una struct per confrontare i pesi del nodo
struct node_comparison
{
bool operator<(const Node* a, const Node* b) const
{
return a->totalWeight < b->totalWeight;
}
};
Tuttavia dice che ci sono troppi parametri per questa funzione dell'operatore. Ho cercato di capire come riuscire a gestire una coda di priorità heap minima con i miei nodi per un po 'di tempo e rimanere bloccati. Qualche idea?
Qual è l'errore effettivo? –
In [la documentazione] (http://en.cppreference.com/w/cpp/container/priority_queue/priority_queue), vedere [l'esempio] (http://en.cppreference.com/w/cpp/container/ priority_queue/priority_queue # Esempio) che utilizza ['std :: less'] (http://en.cppreference.com/w/cpp/utility/functional/less). È necessario implementare [qualcosa di simile] (http://en.cppreference.com/w/cpp/utility/functional/less#Possible_implementation) per 'Nodo *'. –