Sto scrivendo una libreria che fornisce grafici per gli algoritmi di ricerca.
Di solito vuoi classificare i nodi usando una coda di priorità. Normalmente vuoi cercare un nodo specifico nella coda e abbassarne la chiave (quando trovi un percorso migliore).
La ricerca sarebbe O (n) a meno che non si conosca l'indice del nodo (è possibile aggiungerlo alla struttura del nodo). L'aggiunta dell'indice al nodo richiede che la coda sia in grado di aggiornare l'indice quando necessario.
Ho problemi a scrivere una coda di priorità generica, perché ho bisogno di sapere dove leggere e scrivere l'indice di un nodo in questa coda. C'è un modo per farlo?
Il codice potrebbe apparire come questo
class SomeNode : Node {
int indexA;
int indexB;
}
template <typename N, ?? indexMember>
class Heap{
update(N node, int key){
//...
node.indexMember = i;
}
}
Heap<SomeNode, 'indexA'> heapA(cmp_A());
Heap<SomeNode, 'indexB'> heapB(cmp_B());
Ci sto chiedendo qui perché penso che il design potrebbe richiedere alcune rielaborazioni piuttosto che una caratteristica probabilmente mancante