Vektoren mit der Bereichsschleife von C 11 iterieren und ändern
Beim Durchlaufen eines Vektors mithilfe der bereichsbasierten for von C 11 stellt sich eine häufige Frage : Können Sie ein Element entfernen, während Sie sich in der Schleife befinden?
Einschränkungen des bereichsbasierten For Schleifen
Die Antwort lautet „Nein“, da bereichsbasierte for-Schleifen für den einmaligen Zugriff auf jedes Element eines Containers konzipiert sind. Wenn Sie den Container ändern, Elemente entfernen oder nichtlineare Iterationen durchführen müssen, sollten Sie stattdessen eine herkömmliche for-Schleife verwenden.
Vektoren mit herkömmlichen Schleifen ändern
Um während der Iteration ein Element aus einem Vektor zu entfernen, können Sie eine traditionelle for-Schleife verwenden:
for (auto it = inv.begin(); it != inv.end(); ++it) { // Do some stuff if (blah) { it = inv.erase(it); --it; // Decrement iterator to avoid skipping an element } }
Vorteile von Traditional Schleifen
Herkömmliche Schleifen bieten mehr Flexibilität als bereichsbasierte for-Schleifen:
Das obige ist der detaillierte Inhalt vonKönnen Sie Elemente aus einem C-Vektor entfernen, während Sie eine bereichsbasierte For-Schleife verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!