C++ std::set update is tedious: I can't change an element in place
c++, set, stl
Solution
`set` returns `const_iterators` (the standard says `set<T>::iterator` is `const`, and that `set<T>::const_iterator` and `set<T>::iterator` may in fact be the same type - see 23.2.4/6 in n3000.pdf) because it is an ordered container. If it returned a regular `iterator`, you'd be allowed to change the items value out from under the container, potentially altering the ordering.
Your solution is the idiomatic way to alter items in a `set`.
Problem
I find the update operation on `std::set` tedious since there's no such an API on cppreference. So what I currently do is something like this: ``` //find element in set by iterator Element copy = *iterator; ... // update member value on copy, varies Set.erase(iterator); Set.insert(copy); ``` Basically the iterator return by `Set` is a `const_iterator` and you can't change its value directly. Is there a better way to do this? Or maybe I should override `std::set` by creating my own (which I don't know exactly how it works..)