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 2005

    Nach dem obigen Sortieralgorithmus:
    ExFa
    Excel-Dateien
    Microsoft Access-Datenbank
    Xtreme Sample Database 2005
    dBASE-Dateien

    Sortiert sein soll sie:
    dBASE-Dateien
    Excel-Dateien
    ExFa
    Microsoft Access-Datenbank
    Xtreme Sample Database 2005

    Wie 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! 🙂


Anmelden zum Antworten