"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

SOLVED: C++ STL Priority Queue mit eigener Compare Funktion

Neo-=IuE=- 18.10.2005 - 23:05 2079 2
Posts

Neo-=IuE=-

Here to stay
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3232
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

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
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
Registered: Jun 2002
Location: Berndorf, NÖ
Posts: 3232
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
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz