To jest mój pierwszy raz przy użyciu kolejki priorytetowej. Próbuję zaimplementować algorytm Dijkstry do szkoły i doszedłem do wniosku, że potrzebuję sterty min. Teraz moje węzły są wskaźnikami i chcę porównać ich wagę, ale nie sądzę, że mogę przeciążać> i < za pomocą wskaźników? Czy jest sposób, w jaki mogę to osiągnąć?Kolejka priorytetowa STL i przeciążanie za pomocą wskaźników
Code tak daleko:
priority_queue<Node*, vector<Node*>, node_comparison> minHeap;
A potem mam struct porównywania ciężarów węzła
struct node_comparison
{
bool operator<(const Node* a, const Node* b) const
{
return a->totalWeight < b->totalWeight;
}
};
Jednak mówi, że nie ma zbyt wielu parametrów dla tej funkcji operatora. Próbowałem dowiedzieć się, jak od pewnego czasu mogę zarządzać kolejką priorytetową minowych stert z moimi węzłami i dalej utknąć. Jakieś pomysły?
Jaki jest rzeczywisty błąd? –
W [dokumentacji] (http://en.cppreference.com/w/cpp/container/priority_queue/priority_queue) zobacz [przykład] (http://en.cppreference.com/w/cpp/container/ priority_queue/priority_queue # Example), który używa ['std :: less'] (http://en.cppreference.com/w/cpp/utility/functional/less). Musisz zaimplementować [coś podobnego] (http://en.cppreference.com/w/cpp/utility/functional/less#Possible_implementation) dla 'Node *'. –