SOLVED: C++ STL Priority Queue mit eigener Compare Funktion
Neo-=IuE=- 18.10.2005 - 23:05 2079 2
Neo-=IuE=-
Here to stay
|
Also i hab scho einige C++ Referenzen angeschaut, komm aber mit den Erklärungen nicht klar, wie ich dann alles initialisieren muss.
Also was ich bis jetzt weiß ist, dass ich eine funktion schreiben muss die wie folgt ausschaut: "bool Compare(x, y)" Wenn true zurückgeliefert wird, dann wird angenommen, dass x kleiner als y ist und x dahinter gereiht (höchste priorität am gewinn).
Eine normale Priority Queue wird ja so initialisiert
"priority_queue <Typ> Variablenname;"
Das Ganze geht im Prinzip um einen Klasse die einen Graphen enthält und da drinnen sind lauter Klassen für jeden Knoten. Ich will jetzt in der Queue eben die Knoten ablegen (Typ Node* der Queue). Der Vergleichswert soll jetzt ein Wert sein (Distanz) der in dieser Klasse für die Knoten drin ist ("node->getDistance()") welche "int" Werte liefert und die soll mir meine Compare Funktion vergleichen.
Ich hoffe ich habe es richtig verstanden, dass das möglich ist (damit ich nicht umsonst gesucht habe) und wenn es geht hoffe ich, dass mir hier wer helfen kann.
tia Neo
Bearbeitet von Neo-=IuE=- am 19.10.2005, 07:15
|
that
ModeratorHoffnungsloser Optimist
|
Ich habs zwar noch nie gemacht, aber ja, das sollte gehen, ca. so:
struct compareNodeDistance { bool operator() (Node* x, Node* y) { return x->getDistance() < y->getDistance(); } };
...
priority_queue<Node*, deque<Node*>, compareNodeDistance> pq;
|
Neo-=IuE=-
Here to stay
|
thx funktioniert einwandfrei
jetzt is mir auch klar, der erwartet a klasse und net a funktion....
supa danke für die hilfe
Bearbeitet von Neo-=IuE=- am 19.10.2005, 00:29
|