Hvordan Alfabet en Array i C ++

C ++ Standard Template Library er full av nyttige funksjoner for å håndtere data, inkludert sorteringsalgoritmen. Dessverre, hvis du bruker sorteringsalgoritmen på en rekke strenger, de vil ikke komme ut i alfabetisk rekkefølge. I stedet, det som standard til å sortere dem i noe som kalles ASCIIbetical orden - en sortering basert på den interne koding av de enkelte bokstaver. For å sortere alfabetisk, må du oppgi en funksjon som forteller sorteringsalgoritmen nøyaktig hvordan å sammenligne to strenger på den måten du ønsker.

Bruksanvisning

1 Ta med alle nødvendige overskrifter ved å legge til følgende linjer i begynnelsen av programmet:

inkluderer <algoritme> inkluder <string>

2 Skriv en wrapper funksjon for lexographical_compare funksjon. Sorterings () funksjonen du vil bruke senere krever sammenligningen funksjon for å ta to strenger som argumenter og returnerer en bool, som ikke er hvordan lexographical_compare funksjonen fungerer. Du kan erklære denne funksjonen som en global funksjon i prosjektets navnerom for å tillate at den kan brukes fra alle deler av programmet. Hvis du bare trenger å alfabetisere en matrise i en klasse, kan du ønsker å erklære det som en privat medlem funksjon.
bool myCompare (string en, streng b)
{
tilbake lexographical_compare (a.begin (), a.end (), b.begin (), b.end ());
}

3 Sortere tabellen ved å bruke sorteringsalgoritmen med sammenlignings funksjonen du nettopp skrev:
sort (myStringArray, myStringArray + myStringArrayCount, myCompare);

Hint

  • Se inn i locale biblioteket for metoder for å angi hvordan du vil sortere strenger - ulike språk har ulike regler for alphabetization.