#include using namespace std; #include class Personaje { int edad; string nombre; public: Personaje(int e, const string & n) : edad(e), nombre(n) {} int getEdad() const {return edad; } const string & getNombre() const {return nombre; } bool operator<(const Personaje & personaje2) const { // Descomenta esto y pruebalo: // return nombre < personaje2.getNombre(); // Sustituye getNombre() por nombre y observa que funciona igual // Prueba tambien a cambiar < por > en la siguiente instruccion // y entiende lo que sucede return edad < personaje2.edad; } }; int main() { priority_queue pq; pq.push(Personaje(15, "Vicente")); pq.push(Personaje(10, "Ana")); pq.emplace(20, "Rodrigo"); // Al igual que en la clase queue, esto es equivalente en C++11 a // pq.push(Personaje(20, "Rodrigo")); // pero crea internamente el objeto ahorrando movimientos o copias cout << "Talla: " << pq.size() << endl; while (! pq.empty() ) { cout << "[" << pq.top().getEdad() << " - " << pq.top().getNombre() << "]" << endl; pq.pop(); } }