The C + + Standard Template Library är full av användbara funktioner för att hantera data, inklusive den typ algoritmen . Tyvärr , om du använder den sort algoritmen på en array med strängar , så kommer de inte i alfabetisk ordning . Istället , defaults den till att sortera dem i något som kallas ASCIIbetical ordning - en sortering baserad på den interna kodningen av de enskilda bokstäverna . För att sortera alfabetiskt , måste du ge en funktion som talar om för sort algoritm exakt hur man kan jämföra två strängar på det sätt du vill . Instruktioner
1
Inkludera alla nödvändiga rubriker genom att lägga till följande rader i början av ditt program : # include # include
2 Skriv en wrapper -funktion för lexographical_compare funktionen . Den sort ( ) -funktion du kommer att använda senare kräver jämförelsen funktionen att ta två strängar som argument och returnera en bool , vilket är inte hur lexographical_compare funktionen fungerar . Du kan deklarera denna funktion som en global funktion i ditt projekt namespace för att kunna användas från någon del av ditt program . Om du bara behöver alphabetize en array i en klass , kanske du vill förklara den som en privat medlem function.bool myCompare ( sträng a , string b ) {return lexographical_compare ( a.begin ( ) , a.end ( ) , b . börja ( ) , b.end ( ) ) ; } Addera 3
Sortera arrayen med hjälp av sort algoritmen med jämförelsen funktionen du just skrev : sort ( myStringArray , myStringArray + myStringArrayCount , myCompare ) ;