Корректно ли проходить по QMap с помощью итераторов и стирать/добавлять элементы?

Можно ли корректно пройти последовательно по QMap с помощью итераторов, выполняя такие действия: удаление некоторых элементов и добавление новых?

Например:

for( QMap<key_t,val_t>::iterator it = map.begin();
     it != map.end();
     ++it )
{
     if( it->value == something )
     {
          map.erase(it);
          map.insert(it->key+10,it->value); 
     } 
}

Кажется, что ничего не будет сделано неправильно, я спрашиваю, чтобы убедиться. (У меня нет времени проверять).

UPD Буду решать с помощью QMap::unite():

for( QMap<key_t,val_t>::iterator it = map.begin();
     it != map.end();
     ++it )
{
     if( it->value == something )
     {
          tmp_map.insert(it->key+10,it->value); 
          map.erase(it);
     } 
}
map.unite(tmp_map);

Спасибо за ответы!

6
задан ASten 23 January 2012 в 14:49
поделиться