(Im)Mutable Sets



  • Die STL Sets sind ja immutable, was manchmal etwas nervig ist. Wenn man zB. seine eigene Sortierfunkion übergibt würde man die für die Sortierung nicht benötigten Variablen gerne beschreiben können. Auf http://www.angelikalanger.com/Articles/Cuj/01.SetIterators/SetIterators.html steht jetzt ein langer Artikel über Iterator-Adaptoren und ewig viel Code für ein simples Problem, was man einfach dadurch lösen kann, dass man die Variablen als "mutable" deklariert.

    Meine Frage ist jetzt ob die Iteratormethode irgendeinen besonderen Vorteil gegenüber "mutable" hat.



  • Caster schrieb:

    Wenn man zB. seine eigene Sortierfunkion übergibt würde man die für die Sortierung nicht benötigten Variablen gerne beschreiben können.

    😕 Was? Beispiel?



  • In meinem Fall wars:

    struct TaskPointer
    {
        /*mutable */uint RefCounter;
        Task *task;
    
        bool operator==(const struct TaskPointer &rhs) const
        {
            return task == rhs.task;
        }
    
        bool operator<(const struct TaskPointer &rhs) const
        {
            return task < rhs.task;
        }
    };
    
    std::set<TaskPointer>;
    


  • Caster schrieb:

    Die STL Sets sind ja immutable, was manchmal etwas nervig ist. Wenn man zB. seine eigene Sortierfunkion übergibt würde man die für die Sortierung nicht benötigten Variablen gerne beschreiben können.

    Nimm doch einfach std::map.



  • Sicher könnte man auch maps nehmen, doch erstens ging es mir eher um einen Vergleich der beiden Lösngsmöglichkeiten und zweitens konnte ich aufgrund der verwendeten Library nur sets nehmen.


Anmelden zum Antworten