C++ std::set update ist mühsam: ich kann nicht ändern, ein element in place

Finde ich die update-operation auf std::set mühsam, da es keine solche API auf cppreference. Also, was ich derzeit tun, ist so etwas wie dieses:

//find element in set by iterator
Element copy = *iterator;
... //update member value on copy, varies
Set.erase(iterator);
Set.insert(copy);

Grundsätzlich der iterator zurück von Set ist ein const_iterator und Sie können nicht ändern, seinen Wert direkt.

Gibt es einen besseren Weg, dies zu tun? Oder vielleicht sollte ich überschreiben std::set durch meinen eigenen (was ich nicht genau weiß, wie es funktioniert..)

  • Eine inline-Funktion, wenn Sie finden über 2 Aussagen ist schon mühsam.
  • KennyTM trifft den Nagel auf den Kopf. Es gibt keine Nachteile performancewise, um dies zu tun, so tun Sie es einfach jetzt schon! 😛
  • Wenn Sie schreiben, eine update-Funktion, möchten Sie vielleicht, um das Modell auf die gleiche Weise, wie Boost.MultiIndex: boost.org/doc/libs/release/libs/multi_index/doc/tutorial/...
  • cplusplus.com ist eine schreckliche Referenz. Finden Aspekte der Sprache "langweilig", weil es scheint... seltsam.
  • Ich denke der Nachteil dieses Ansatzes ist, wobei ein Lese/Schreib-Sperre im Fall der gleichzeitigen Verarbeitung.
InformationsquelleAutor Figo | 2010-02-07
Schreibe einen Kommentar