Il C + + Standard Template Library è pieno di funzioni utili per la gestione dei dati , tra cui l' algoritmo di ordinamento . Purtroppo , se si utilizza l' algoritmo di ordinamento su un array di stringhe , non saranno usciti 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 ordinamento esattamente come confrontare due stringhe nel modo desiderato . Istruzioni
1
includere tutte le intestazioni necessarie aggiungendo le seguenti righe all'inizio del vostro programma : # include # include
2 < p > 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 restituire un bool , che non è come funziona la funzione 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 un array all'interno di una classe , si potrebbe desiderare di dichiararla come membro privato function.bool MyCompare (string a , string b ) {return lexographical_compare ( a.begin ( ) , a.end ( ) , b . begin () , b.end ( ) );}
3 Ordina l'array utilizzando l' algoritmo di ordinamento con la funzione di confronto che hai appena scritto : sort ( myStringArray , myStringArray + myStringArrayCount , MyCompare ) ;