Mi chiedo perché per la creazione di un heap minimo utilizzando priority_queue
, è necessario utilizzare std::greater
?Il motivo dell'uso di `std :: greater` per la creazione di heap minimo tramite` priority_queue`
std::priority_queue<T, std::vector<T>, std::greater<T> > min_heap;
Per me, dal momento che il valore più piccolo si trova sempre in cima al mucchio, la classe impiegato dovrebbe essere std::less
Aggiornamento: D'altra parte, dal momento che il comportamento predefinito di priority_queue
(max heap) è quello di tenere il più grande valore in alto, mi sembra che la std::greater
dovrebbe essere utilizzato per la creazione max heap e non per la creazione mucchio min
Dove stai cercando? Sto leggendo cppreference.com in questo momento e loro specificano std :: less come default e dicono che sostituendo std :: greater farebbe in modo che l'elemento più piccolo appaia come 'top' piuttosto che come il più grande. Sembra solo una questione di convenzione, no? – sunny