Priority Queues
Priority Queues
somebody knows how to use the priority queue of the stl, not with the data type int but with some other structure or class. I'm trying but i don't know how to indicate the priority order. I've already try with overloading operators but i'm having some troubles. Could anyone help me?
Re: Priority Queues
Para este caso lo debemos hacer es sobre cargar el operardor < de la estructura, si tienes una estructura con dos campos Edad y Peso, queremos ordenar de menor a mayor por la edad y el peso.
Para el caso de la Cola con prioridad, la cola por defecto escoge el menor y con la sobrecarga del operador < que hicimos anteriormente funciona perfectamente, entonces ¿que debemos hacer? pues lo siguiente:
La idea esta por ahí, espero que esto te ayude...
Salu2, Dariel.
Code: Select all
#include <cstdio>
using namespace std;
struct Estudiante {
int Edad, Peso;
bool operator<(const Estudiante & Est) const {
return ( (Edad<Est.Edad) || (Edad==Est.Edad && Peso<Est.Peso)) ;
}E[100];
int N;
int main() {
scanf("%d", &N);
for(int i=0; i<N; i++)
scanf("%d%d", &E[i].Edad, &E[i].Peso);
sort(E, E+N);
for(int i=0; i<N; i++)
printf("%d %d\n", E[i]. Edad, E[i].Peso);
return 0;
}
Code: Select all
#include <cstdio>
#include <queue>
using namespace std;
......
priority_queue <Estudiante> PQ;
Estudiante A;
......
int main {
scanf("%d", &N);
for(int i=0; i<N; i++){
scanf("%d%d", &A.Edad, &A.Peso);
PQ.push(A);
}
while(!PQ.Empty()) {
printf("%d %d\n", PQ.top().Edad, PQ.top().Peso);
PQ.pop();
}
return 0;
}
Salu2, Dariel.