vector, bestehend aus struct, sortieren



  • Ein Feld zu sortieren geht ja so:

    vector<int> feld;
    //...
    sort (feld.begin (), feld.begin ()+feld.size ());
    

    Wie mach ich es aber, wenn ich sowas hier habe:

    struct DATENSATZ
    {
        string text;
        int zahl;
    };
    
    vector<DATENSATZ> feld;
    

    Wie kann ich das zum Beispiel nach der Zahl sortieren? Und was mich noch interessieren würde: Geht es, daß er erst nach dem String und dann (wenn der String zweier Feldeinträge gleich ist) nach der Zahl sortiert?



  • Deine Struct muss den operator< überladen, da mit dem die Elemente überprüft werden. Darin implementierst du dann die Logik.

    Du vergleichst beispielsweise erst die beiden Strings, und wenn sie gleich sind, vergleichst du die Zahlen.



  • Schau in die Doku zu std::sort, da werden alle deine Fragen beantwortet.



  • Danke. Das mit der Operatorüberladung war genau das, was ich benötigte.


Log in to reply