Sto cercando di implementare un heap minimo in C++ per un tipo di struct che ho creato. Ho creato un vettore del tipo, ma si è bloccato quando ho usato make_heap su di esso, il che è comprensibile perché non sa come confrontare gli elementi nell'heap. Come posso creare un min-heap (ovvero, l'elemento superiore è sempre il più piccolo nell'heap) per un tipo di struct?heap min C++ con tipo definito dall'utente
La struct è qui sotto:
struct DOC{
int docid;
double rank;
};
voglio mettere a confronto le strutture DOC utilizzando il membro rango. Come lo farei?
Ho provato a utilizzare una coda di priorità con una classe di confronto, ma anche questo si è bloccato, e sembra anche sciocco utilizzare una struttura dati che utilizza un heap come base di partenza quando quello che mi serve è un heap comunque.
La ringrazio molto, BSG
qual è la tua definizione di "arresto anomalo"? Sicuramente, se non si dispone di alcuna funzione di comparatore o operatore
sellibitze
No, non l'ho fatto, in realtà. Sicuramente non con la coda di priorità, che aveva definito un operatore sovraccarico, e non penso nemmeno con make_heap. Anche se potrebbe essere che in quest'ultimo caso ho avuto un errore di compilazione. La prima volta, tuttavia, è stata compilata correttamente ma si è bloccata in fase di esecuzione. – bsg
Se si tenta di utilizzare make_heap solo con due argomenti, è necessario un operatore
sellibitze