Bitte um Erklärung für Anfänger | Namen alphabetisch sortieren
-
Hallo liebe Forengemeinde,
ich habe folgende Sortierfunktion gegeben, die Namen alphabetisch sortiert und ausgibt. Übergabeparameter sind ein string Array mit Namen und deren Anzahl:
void sortiere(string namen[], int size) { string tmp_name = ""; for (int i = 0; i < size - 1; i++) { for (int j = i+1; j < size; j++) { if (namen[i] > namen[j]) { tmp_name = namen[i]; namen[i] = namen[j]; namen[j] = tmp_name; } } } .......
Meine Frage bezieht sich auf die If-Anweisung (Zeile 8), in der zwei strings miteinander verglichen werden. Was genau und wie vergleicht die Operation, um Rückschlüsse über die alphabetische Ordnung zu bekommen? ASCII-Code?
Vielen Dank im Voraus für eure Antwort(en)!
-
@Person-921 sagte in Bitte um Erklärung für Anfänger | Namen alphabetisch sortieren:
string namen[]
mag zwar aussehen wie ein Array, ist aber "nur" ein Pointer auf
das erste Elementeinenstring
. Da könnte genausogutstring *namen
stehen. Stichwort: Array-to-pointer decay.@Person-921 sagte in Bitte um Erklärung für Anfänger | Namen alphabetisch sortieren:
ASCII-Code?
Vermutlich. Zumindest die lateinischen Buchstaben haben in allen gängigen Kodierungen die selben Werte.
-
Hier wird der String-Vergleichsoperator operator==,!=,<,<=,>,>=(std::basic_string) aufgerufen, welcher sich intern wie std::lexicographical_compare verhält. Der offizielle Ausdruck dafür ist also "Lexikographischer Vergleich" (welcher auf den meisten [gängigen] Plattformen auf der ASCII- bzw. für
std::wstring
auf der Unicode-Kodierung basiert). Daher solltest du auch mal von EBCDIC gehört/gelesen haben, um zu wissen, daß es auch andere Kodierungen gibt.