Учитывая std::set
, каков наилучший способ изменить набор во время итерации?
Например:
std::set<T> s; // T is a some type (it's not important for the question).
// insertions to s
for (std::set<T>::iterator it = s.begin(); it != s.end(); it++) {
T saveIt(*it);
s.erase(*it);
s.insert( saveIt + saveIt ); // operator+ that defined at `T`
}
Согласно тому, что я читал в некоторых источниках, это плохой путь, потому что: удаление из набора может изменить структуру набора.
Так, каков лучший (/ лучший) способ сделать это?