Come alfabetizzare un array in C ++

October 31

Il C ++ Standard Template Library è pieno di funzioni utili per gestire dati, tra cui l'algoritmo di ordinamento. Purtroppo, se si utilizza l'algoritmo di ordinamento su un array di stringhe, essi non uscirà in ordine alfabetico. Invece, il valore predefinito è ordinandoli in qualcosa di noto come ordine ASCIIbetico - un ordinamento basato sulla codifica interna delle singole lettere. Al fine di risolvere in ordine alfabetico, è necessario fornire una funzione che indica l'algoritmo di tipo esattamente come confrontare due stringhe nel modo desiderato.

istruzione

1 Include tutte le intestazioni necessarie aggiungendo le seguenti righe all'inizio del programma:

includere <algorithm> includere <string>

2 Scrivere una funzione wrapper per la funzione lexographical_compare. La funzione sort () che si intende utilizzare in seguito richiede la funzione di confronto per prendere due stringhe come argomenti e restituisce un bool, che non è come funziona la funzione di lexographical_compare. È possibile dichiarare questa funzione come una funzione globale nel namespace del progetto per permettere di essere utilizzato da qualsiasi parte del vostro programma. Se avete solo bisogno di alfabetizzare una matrice all'interno di una classe, si potrebbe desiderare di dichiararla come una funzione di membro privato.
bool myCompare (string Una corda b)
{
tornare lexographical_compare (a.begin (), a.end (), b.begin (), b.end ());
}

3 Ordinare l'array utilizzando l'algoritmo di ordinamento con la funzione di confronto hai appena scritto:
sort (myStringArray, myStringArray + myStringArrayCount, myCompare);

Consigli e avvertenze

  • Guardate nella libreria locale per i metodi di specificare come ordinare le corde - diverse lingue hanno regole diverse per alfabetizzazione.