Czy można poprawnie przejść przez QMap za pomocą iteratorów i wykonywać takie czynności: usuwanie niektórych elementów i dodawanie nowych?Czy można przejść przez QMap z iteratorami i kasowaniem/dodawaniem przedmiotów?
Na przykład:
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);
}
}
Wydaje się, że nic nie zostanie zrobione źle, pytam się upewnić. (Nie mam dość czasu, żeby to sprawdzić).
UPD rozwiąże z 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);
Dzięki za odpowiedzi!
Dziękujemy za przydatną odpowiedź! Nie mogę użyć twojej rady w ostatnim zdaniu, ponieważ powinienem manipulować pozycją QMap szukającą jej wartości. Po usunięciu i wstawieniu wartości nie zmienia się, więc mogę operować z tymi samymi obiektami w nieskończoność. Wziąłem pod uwagę twoją radę, aby użyć kolekcji tymczasowej i rozwiązać problem z QMap :: unite(). Bardzo dziękuję! – ASten