Come organizzare un elenco utilizzando Structs in C ++

December 7

Come organizzare un elenco utilizzando Structs in C ++


Le liste concatenate sono utili per le liste dinamiche degli oggetti che cambieranno spesso. Una lista collegata può eseguire inserimenti lista e delezioni in tempo costante, mentre gli array dinamici eseguire queste operazioni in tempo lineare. Questo beneficio per l'inserimento e la cancellazione ha un prezzo di avere un tempo di accesso più lento, come la lista deve essere attraversato ogni volta un diverso indice è desiderato. Questa mancanza di accesso casuale significa che non è possibile utilizzare uno standard algoritmo di ordinamento come "qsort", che è una implementazione dell'algoritmo quick sort trovato nella libreria standard C ++. Fortunatamente, i progettisti di std :: list forniti strumenti di ordinamento specifici che sono ben documentati e semplice da usare.

istruzione

1 Includi intestazione lista della libreria standard nel file di codice. Questo può essere già incluso se è stato definito l'oggetto lista nel codice sorgente.

includere <list>

2 Modificare l'implementazione della struttura vi verrà ordinamento sovraccaricare l'operatore "<". Questo operatore viene utilizzato da std :: list durante l'ordinamento della lista. Assicurarsi di selezionare il campo dati corretto per ordinare su, altrimenti i risultati di ordinamento potrebbero non essere come previsto.

// Questa è una struttura esempio. Modificare la struttura esistente di utilizzare l'operatore <

struct MyStruct

{

int m_dataToSortOn;

operatore & lt bool; (Const MyStruct & sd)

{

tornare this.m_dataToSortOn & lt; rhs.m_dataToSortOn;

}

};

3 Chiamare il metodo "sort" sul vostro oggetto lista. Ciò ordinerà l'elenco di oggetti in base all'uscita del "<" operatore.

// Ordinare l'elenco dei dati

myList.sort ();

Consigli e avvertenze

  • È possibile modificare i criteri di ordinamento per la struttura modificando l'operatore di confronto per utilizzare un diverso campo di dati per il confronto.
  • È inoltre possibile fornire una funzione di confronto di metodo di ordinamento della lista. Questo dovrebbe prendere due parametri, e restituire un valore booleano che indica se il parametro si trova a meno di due parametri.
  • L'operatore di confronto prevede che l'operatore "<" viene implementato per qualsiasi campo di dati che si sta utilizzando per il confronto. Se si confrontano gli oggetti di un tipo personalizzato, assicurarsi che il tipo personalizzato ha implementato l'operatore "<" pure.