Sortieren einer List
-
Hallo @all,
ich würde gerne eine Liste so sortieren, wie es die ComboBox-Klasse macht, wenn der Style "CBS_SORT" gesetzt ist:
struct NameStruct { CString Name; CString Irgendwas; }; list<NameStruct> m_NameList; struct sort_name { bool operator()(const NameStruct& lhs, const NameStruct& rhs) const { return lhs.Name < rhs.Name; } };Aufruf:
m_NameList.sort( sort_name() );Die Elemente in der Liste sind unsortiert:
Microsoft Access-Datenbank
Excel-Dateien
dBASE-Dateien
ExFa
Xtreme Sample Database 2005Nach dem obigen Sortieralgorithmus:
ExFa
Excel-Dateien
Microsoft Access-Datenbank
Xtreme Sample Database 2005
dBASE-DateienSortiert sein soll sie:
dBASE-Dateien
Excel-Dateien
ExFa
Microsoft Access-Datenbank
Xtreme Sample Database 2005Wie kann ich den Sortieralgorithmus anpassen, dass ich die obige Ausgabe erhalte?

-
Du mußt den Vergleich Case-Insenstiv durchführen (der "normale" Vergleich basiert auf den ACSII-Werten und da ist 'd' größer als 'X'):
struct sort_name { bool operator()(const NameStruct& lhs, const NameStruct& rhs) const { return lhs.Name.CompareNoCase(rhs.Name)<0; } };
-
Super, danke!
