在迭代器的幫助下,是否可以通過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);
謝謝解答!
謝謝你的有用答案!我不能在最後一句中使用你的建議,因爲我應該用QMap的項目來操作它的值。擦除和插入後值不會改變,所以我可以無限地使用相同的項目。我已經考慮到你的建議,使用臨時集合並用QMap :: unite()解決問題。非常感謝! – ASten