He encontrado este ejemplo y creo que está bastante descriptivo, pero todavía hay algo que no entiendo, y es ¿cómo sabe la cola que tiene que ordenar por el parámetro "distance", si en ningún lugar veo la especificación de eso?
El ejemplo es el siguiente:
Código:
#include <string>
class Destination {
unsigned int distance; string destination;
friend ostream& operator<<(ostream &, const Destination &) ;
public:
Destination (const string dt, unsigned int ds)
: distance(ds), destination(dt) {}
bool operator< (const Destination & right) const {
return distance < right.distance;
}
};
ostream & operator << (ostream& os, const Destination & p) {
return os << p.destination << " " << p.distance ;
}
int main() {
// keep a priority queue of distances to cities
priority_queue < Destination > que;
que.push(Destination("halifax", 0));
que.push(Destination("truro", 100));
que.push(Destination("moncton", 230));
while (! que.empty() ) { // remove top entry from queue
cout << que.top() << endl;
que.pop();
}
}
/* output
moncton 230
truro 100
halifax 0
*/
Saludos
Oracle