for( iter = vList.begin( ); iter != vList.end( ); iter++ ), geht nicht? Wieso?
-
Hm es kommt zwar kein Fehler mehr, aber sortiert ist die liste anscheind nicht.
-
Schau mal bitte, was ich bei "Edit2" geschrieben habe.
-
EDIT: zu spät
-
Ich möchte aber die Werte und nicht die Adressen vergleichen lassen.
PS: Bzw. wie soll ich lexicographical_compare benutzen ein einziges Array zu sortieren?
-
Dann nutze wie schon geschrieben lexicographical_compare() aus <algorithm> an. Oder bastel dir eine eigene schleife und geh die Buchstaben durch.
-
Am einfachsten wird wohl fürs erste strcmp sein. Die lexicographical_compare Variante könnte aber schneller sein, wenn man die Länge der Strings wüsste.
@TObi:
Du sollst es nicht zum sortieren benutzen, sondern zum vergleichen. Mit strcmp oder lexicographical_compare kannst Du die Inhalte zweier (strcmp: nullterminierten) char-Arrays vergleichen.
-
Es ärgert mich aber irgendwie, denn ich bin mir sicher das ich das schon einmal mit dem überladen des '<' operators gemacht habe, versteh wirklich net wieso das jetzt son problem ist für mein compilier ...
-
Der Compiler macht genau das was er soll. Nur du sagst ihm, dass er was anderes machen soll als du möchtest

-
Wieso sag ich ihm was anderes?
-
T0bi schrieb:
Es ärgert mich aber irgendwie, denn ich bin mir sicher das ich das schon einmal mit dem überladen des '<' operators gemacht habe, versteh wirklich net wieso das jetzt son problem ist für mein compilier ...
Es geht doch garnicht um den operator<, sondern um das, was darin passiert. Wenn die Operator-Funktion (konstante) Referenzen annimmt, funktioniert das ganze einwandfrei. Das Problem ist: Im operator< sagst Du ihm, dass er zwei Zeiger vergleichen soll. Das willst Du aber nicht, sondern Du willst die Inhalte vergleichen. Das macht man mit strcmp oder lexidings_compare. Im ansonsten vollkommen korrekten operator<.
-
also quasie so:
bool operator <( const LISTE &newItem ) const { return( lexicographical_compare( ... ); }???
Aber wie muss ich das dann in der lexicographical_compare schreiben?
-
bool operator <( const LISTE &newItem ) const { return( lexicographical_compare( this->szFullName, this->szFullName + strlen( this->szFullName ), newItem.szFullName, newItem.szFullName + strlen( newItem.szFullName ) ) ); }olala.. es geht xD Danke.
Kann mich trotzdem nicht daran erinnern das ich das damals auch so gemacht habe.
Trotzdem dake.Gruß Tobi.
-
Wahrscheinlich hast du damals std::string benutzt.