¿Es posible caminar de forma consecutiva a través de QMap con la ayuda de iteradores, y hacer tales acciones: eliminar algunos elementos y agregar otros nuevos?¿Es correcto recorrer QMap con iteradores y borrar/agregar elementos?
Por ejemplo:
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);
}
}
Parece, que no se hará nada mal, yo estoy pidiendo para estar seguro. (No tengo tiempo suficiente para verificarlo).
UPD resolverá 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);
Gracias por las respuestas!
Gracias por su útil respuesta! No puedo usar su consejo en la última oración porque debería manipular con el elemento de QMap buscando su valor. Después de borrar e insertar el valor no cambia, entonces puedo operar con los mismos elementos infinitamente. He tenido en cuenta tus consejos para utilizar una colección temporal y resolver el problema con QMap :: unite(). ¡Muchas gracias! – ASten