Ver Mensaje Individual
  #4  
Antiguo 22-02-2007
Avatar de oracle
oracle oracle is offline
Miembro
 
Registrado: feb 2005
Posts: 99
Reputación: 20
oracle Va por buen camino
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
__________________
El único hombre que no se equivoca es el que nunca hace nada.
Responder Con Cita