Ändern der Elemente in std::set
-
Hallo,
ich teste grad einen Scanlinealgorithmus, der die aktuellen Intervalle in einem std::set vorhält. Leider kann man die Elemente eines std::set nicht direkt modifizieren, da man ja den Key ändern könnte und alles korrumpieren würde.
Gibt es einen Standardweg die Elemente doch zu ändern, wenn man weiss, dass man dadurch die Reihenfolge nicht ändert? Oder sollte man dann lieber Judy oder sonst was nehmen?
-
Einfach via
const_caständern? Ansonsten gibt's ja noch iterator insert(iterator pos, const value_type& x) - nicht ganz was du willst, aber damit kannst du zumindest den neuen Wert fix wieder einfügen.
-
Es gibt nur eine offizielle Möglichkeit, die set-Elemente zu "ändern" - alten Wert löschen und neuen Wert eintragen. (selbst den const_cast würde ich dir dort nicht empfehlen)
Als Alternative könntest du deine Daten auch in einem vactor<>/deque<>/list<> speichern und dich selber um die Sortierung kümmern.
-
Ich würde sowieso kein std::set nehmen (es sei denn du verwendest nen custom allocator), weil ein std::set durch die andauernde Verwendung des allocators ziemlich langsam ist wenn man viel einfügt/löscht.
Ansonsten sehe ich keinen Grund warum die const_cast Methode nicht funktionieren sollte.