È possibile camminare in modo sequenziale attraverso QMap con l'aiuto degli iteratori e compiere tali azioni: rimuovere alcuni elementi e aggiungerne di nuovi?È corretto percorrere QMap con iteratori e cancellare/aggiungere elementi?
Ad esempio:
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);
}
}
Sembra, che nulla sarà fatto male, sto chiedendo di essere sicuri. (Non ho abbastanza tempo per controllarlo).
UPD risolveremo con 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);
Grazie per le risposte!
Grazie per la risposta utile! Non posso usare il tuo consiglio nell'ultima frase perché dovrei manipolare con item di QMap cercando il suo valore. Dopo aver cancellato e inserito il valore non cambia, quindi posso operare infinitamente con gli stessi oggetti. Ho preso in considerazione il tuo consiglio per utilizzare una raccolta temporanea e risolvere il problema con QMap :: unite(). Grazie mille! – ASten