Sortierung und erase von set?



  • Ich habe einen Set-Container der mit der Klasse getraenke gefüllt wird. Wie kann ich später z.B. ein Element mit dem Name Bier wieder löschen?

    class getraenke
    {
       AnsiString Name;   // Name des Getränks
       int Liter;         // Angabe der Menge in Liter
       int Prozent;       // Alkoholgehalt
       int Beleibtheit;   // Prozentzahl 0 -100 %
    };
    

    Da muss man doch sicherlich vorher einen Key setzen, aber wie geht das? Direkt in der Erzeugung von

    std::set<getraenke, less<...> > G;
    

    oder indem man compare_key oder compare_value setzt?

    Ich habe mir das folgendermaßen gedacht, komme aber nicht weiter:

    std::set<getraenke>::iterator IterG;
    IterG = find(G.begin(), G.end(), ...);
    G.erase(IterG);
    

    Aber ich weiss leider nicht, was ich bei ... eintragen muss!

    Ebenso habe ich ein Problem mit der Sortierung, nach was wird denn sortiert? Denke, dass die zwei Probleme ziemlich gleich sind!

    Bin für alle gebräuchlichen Tipps dankbar!



  • du Gibst bei find ein Objekt an, was dem Objekt entspricht (siehe operator==) das du suchst.

    Wenn du nur nach einer bestimmten Eigenschaft suchst (hier Name == "Bier"?), dann benutzt man std::find_if, wo man eine Funktion übergeben kann, die die Überprüfung durchführt.

    Benutz mal die Suche, wenn du (mehr) Beispiele suchst.


Anmelden zum Antworten