priority_queue in C++


#1

Ciao,
fino ad ora per implementare strutture di dati nelle quali si possono fare operazioni in tempo logaritmico (tipo per Dijkstra) ho sempre usato un vector+le funzioni tipo make_heap, push_heap… Ora però ho bisogno di usare le priorità_queue perché ho la necessità che tutto il vector sia ordinato, ma non riesco a capire come dichiararle in C++. Ho guardato le reference, ma non ci ho ricavato un granché. Qualcuno sa darmi una mano?


#2

Usare i vector con make_heap ecc. è equivalente ad usare una priority_queue. Se vuoi avere un “vector ordinato” allora prova a vedere i set.


#3

Ok grazie!
Un ultima domanda, come posso dire al set il criterio di ordinamento? Quando uso il sort passo come argomento e una funzione bool che stabilisce in che modo ordinarli, mentre per set non riesco a capire come si fa dalla reference.


#4
struct compare {
    bool operator() (const int& a, const int& b) const{
        return a < b;
    }
};

Mi pare fosse così.


#5

Grazie mille per l’aiuto!!