Ho bisogno di utilizzare l'heap di Fibonacci nel mio progetto e sto cercando di usarlo dalla libreria boost. Ma non riesco a capire come impostare una funzione di confronto definita dall'utente per tipo di dati arbitrario. Ho bisogno di costruire un mucchio min per il nodo struct definiti come segue:Definizione della funzione di confronto per heap di fibonacci in boost
struct node
{
int id;
int weight;
struct node* next;
/* dist is a global array of integers */
bool operator > (struct node b) //Boost generates a Max-heap. What I need is a min-heap.
{return dist[id] < dist[b.id] ? 1:0 ;} //That's why "<" is used for "operator >".
bool operator < (struct node b)
{return dist[id] > dist[b.id] ? 1:0 ;}
bool operator >=(struct node b)
{return dist[id] <= dist[b.id] ? 1:0 ;}
bool operator <=(struct node b)
{return dist[id] >= dist[b.id] ? 1:0 ;}
node()
{
id=0;
weight=0;
next=NULL;
}
};
ho guardato la documentazione e c'era una classe confrontare. Ma non conteneva alcun elemento. Per favore dimmi come impostare una funzione di confronto definita dall'utente. Grazie in anticipo.
come è stato specificato se utilizzare tale operatore per un numero minore o maggiore rispetto al confronto? Voglio dire, come hai deciso di usare "<" piuttosto che ">"? La scelta cambierà se l'heap è min heap o max heap giusto? – cauthon14
@ user2011038 Sì, lo cambierà. L'ho modificato '>' in modo che questo ti fornisca un heap minimo. – Yuushi