Sagen wir, ich habe diesen Code:Wie kann ein Iterator dereferenziert werden, wenn sein Vektor hinzugefügt wird?
std::vector<Object*> objects;
std::vector<Object*>::iterator iter;
for (iter = objects.begin(); iter != objects.end(); iter++) {
if (condition)
objects.push_back(new Object());
}
Wenn jedoch push_back auftritt, iter
undereferenceable wird. Ohne iter
zurückzusetzen, wie halte ich es dereferenzierbar? Wenn ich es zurücksetzen muss, gibt es eine einfache Möglichkeit, es so zu machen, dass es wieder dahin zurückgeht, wo es vorher war?
Als eine Randnotiz gibt es einen möglichen logischen Fehler in dieser Idee in dem, wenn Sie Objekte an das Ende hinzufügen, während Sie iterieren, ist es möglich, dass Sie in eine Endlosschleife gelangen, wie mehr und mehr Objekte hinzugefügt und Iteration nie beendet (es gibt immer ein anderes Objekt, zu dem man iterieren kann!) – MerickOWA