Angenommen, ich möchte Elemente nach bestimmten Kriterien entfernen. Lassen Sie uns sagen:Wie entferne ich Werte aus einer QMap?
QMap<int, int> map;
und ich möchte alle Elemente entfernen, wo Wert eine ungerade Zahl ist. Wenn ich einen Iterator verwenden:
for (auto it = map.begin(); it != map.end(); ++it)
if (it.value() % 2 == 1)
map.remove(it.key());
Dieser Code ist wahrscheinlich falsch, da der Aufruf von
map.remove(it.key())
der Iterator ungültig. Wie kann ich dies tun, ohne den Iterator nach jeder Entfernung zurückzusetzen?
Das wird mir helfen zu denken: http://StackOverflow.com/Questions/263945/what-Happens-If-Sie-Call-erase-on-A-Map-Element-while-iterating-from-begin-to – Andrew