Come usare puntatori alle funzioni in un binario Cerca argomento in C ++

June 11

Come usare puntatori alle funzioni in un binario Cerca argomento in C ++


biblioteca algoritmo del ++ standard libreria C contiene implementazioni di molti algoritmi di programmazione comune. Queste implementazioni offrono una gamma di flessibilità, permettendo al programmatore di specificare funzioni di confronto per gli algoritmi di confronto-based che possono lavorare con qualsiasi immaginabile struttura di dati. L'aggiunta di una funzione di confronto per una ricerca binaria utilizzando puntatori a funzione permette al programmatore di sfruttare questa flessibilità, e assicura che ogni oggetto creato dal programmatore può essere cercato con la libreria standard.

istruzione

1 Ordinare l'elenco degli oggetti da cercare. Una ricerca binaria dipende da un elenco ordinato di essere presente. Utilizzare funzione di ordinamento della libreria standard per semplificare questo processo quando si usano contenitori della libreria standard:

std :: sort (myList.begin (); myList.end ());

2 Crea il tuo funzione di confronto per l'algoritmo di ricerca binaria. La funzione di confronto deve restituire vero se il primo argomento è minore del secondo. Personalizzare questa funzione per accettare gli argomenti della vostra classe specificata, e di garantire che la classe in questione implementa l'operatore minore di ( "<"):

bool MyComparison (MyType i, j MyType)

{

return (i&lt;j);

}

3 Fornire la vostra funzione di confronto come argomento di funzione di ricerca binaria della libreria standard:

binary_search (myList.begin (), myList.end (), MyComparison);

Questa funzione ora utilizzare la funzione di confronto per eseguire la ricerca binaria.

Consigli e avvertenze

  • Utilizzare i modelli di classe per fare una funzione di confronto generica. Questa funzione può quindi essere riutilizzato su più oggetti senza essere re-implementato. Inoltre, il modello di specializzazione in grado di consentire il polimorfismo con i tipi di ricerca, consentendo una maggiore flessibilità nella progettazione dei dati del programma.
  • Gli oggetti che costituiscono la vostra lista devono avere la operatore minore di definito per questa implementazione di funzionare. Modificare la funzione di confronto per utilizzare altre funzionalità disponibili per gli oggetti, se non è possibile implementare questo operatore.