Jag har en char-array, "char efternamn[20]" som lagrar efternamn. När jag i programmet skriver ut efternamn på skärmen, så vill jag att detta skall göras i alfabetisk ordning. Hur gör jag det? Det är en kommandotolksapplikation. 1. Använd alltid string istället om det går. Kolla på qsort, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_qsort.asp. Okej, förstår. Skall testa sorteringsmetoderna ni tipsade om. <b>>Kolla på qsort,</b> Om du har en array av "char *" borde man väl kunna göra Du kan ju kolla på hur jag löste mitt problem med sortering utav alla poster i en class array:Alfabetisk sortering av efternamn i char-array
Sv: Alfabetisk sortering av efternamn i char-array
2. Du har dina efternamn lagrade i en klass, och vidare en vector<> eller list<> av sådana klasser?
Annars bör du göra så.
I det läget använder du sort i standardbiblioteket (i headern <algorithm>), definierar en jämörelseoperator i klassen, eller en speciell jämförar-klass. Slutligen skriver du ut den sorterade samlingen.
Om du inte använder vector eller list kan du fortfarande använda sort, även om det inte är lika trevligt. Slutligen kan du sortera den själv, men det finns det ingen anledning till.Sv: Alfabetisk sortering av efternamn i char-array
/PeterSv:Alfabetisk sortering av efternamn i char-array
Sv: Alfabetisk sortering av efternamn i char-array
Undvik qsort.
Gammal C-kvarleva, med gamla sätt att skriva kod.Sv: Alfabetisk sortering av efternamn i char-array
bool char_less(const char* l, const char* r) { return strcmp(l,r) < 0; }
void char_sort(const char** a, unisgned N) {
std::sort(a, a+N, char_less);
}
std::sort kräver väl bara bidirectional iterators och std::swap och båda stämmer väl på "const char*"
Kanske även följande fungerar.
std::sort(a, a+N, boost::bind(strcmp, _1, _2) < 0);Sv: Alfabetisk sortering av efternamn i char-array
PS. Includera <algorithm.h>
http://pellesoft.se/communicate/forum/view.aspx?msgid=206219&forumid=41&sum=0
//MVH Eric Johansson n00b developer...