Heim > Backend-Entwicklung > C++ > Können Sie während einer bereichsbasierten C 11-For-Schleife Elemente aus einem Vektor entfernen?

Können Sie während einer bereichsbasierten C 11-For-Schleife Elemente aus einem Vektor entfernen?

Susan Sarandon
Freigeben: 2024-12-02 13:07:12
Original
155 Leute haben es durchsucht

Can You Remove Elements from a Vector During a C  11 Range-based For Loop?

Verwalten von Vektorelementen innerhalb bereichsbasierter for-Schleifen

In C 11 bieten bereichsbasierte for-Schleifen eine bequeme Möglichkeit, über die zu iterieren Elemente eines Containers. Allerdings werden bestimmte Vorgänge, wie das Entfernen von Elementen aus einem Vektor, innerhalb dieser Schleifen problematisch.

Können Elemente während C 11 Range-based for-Schleifen aus einem Vektor entfernt werden?

Leider nein. Bereichsbasierte for-Schleifen sind für die einmalige Iteration jedes Elements in einem Container konzipiert. Sie eignen sich nicht zum Modifizieren des Containers selbst, einschließlich des Entfernens von Elementen.

Alternative zum Entfernen von Elementen:

Um Elemente aus einem Vektor innerhalb einer Schleife zu entfernen, müssen Sie verwenden die traditionelle for-Schleife oder ihre Varianten. Diese ermöglichen Änderungen und nichtlineares Durchlaufen des Containers.

Beispiel:

auto i = std::begin(inv);

while (i != std::end(inv)) {
    // Do some stuff
    if (blah)
        i = inv.erase(i);
    else
        ++i;
}
Nach dem Login kopieren

Durch die Verwendung der Funktionen std::begin und std::end Die Schleife iteriert mithilfe von Iteratoren über den Vektor. Wenn ein Element zum Entfernen markiert ist, wird die Löschfunktion aufgerufen, die den Iterator, der auf das entfernte Element zeigt, ungültig macht. Die Schleife fährt dann fort, indem sie den Iterator weiterleitet.

Zusammenfassend lässt sich sagen, dass bereichsbasierte for-Schleifen zwar eine einfache Verwendung für schreibgeschützte Iterationen bieten, für Vorgänge wie das Entfernen von Elementen aus Vektoren müssen Sie jedoch herkömmliche for-Schleifen verwenden Behalten Sie die Kontrolle über Containeränderungen.

Das obige ist der detaillierte Inhalt vonKönnen Sie während einer bereichsbasierten C 11-For-Schleife Elemente aus einem Vektor entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage