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?
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.
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.
struct compare {
bool operator() (const int& a, const int& b) const{
return a < b;
}
};
Mi pare fosse così.
Grazie mille per l’aiuto!!