Heim  >  Artikel  >  Backend-Entwicklung  >  Wie entferne ich Elemente mit einem bestimmten Wert aus einem STL-Vektor?

Wie entferne ich Elemente mit einem bestimmten Wert aus einem STL-Vektor?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-21 05:57:09893Durchsuche

How to Remove Elements with a Specific Value from an STL Vector?

Elemente mit spezifischem Wert aus STL-Vektor löschen

STL-Vektoren sind beliebte Container in C, aber ihrer API fehlt eine Methode zum Entfernen von Elementen basierend auf auf ihre Werte. Dies wirft die Frage auf:

Wie kann ein Element basierend auf seinem Wert aus einem STL-Vektor entfernt werden?

Obwohl es in der Vektorklasse keine dedizierte Methode gibt, Es gibt eine Lösung, die Standardbibliotheksfunktionen verwendet.

Lösung:

Verwenden Sie die Funktion std::remove, die Elemente nicht direkt aus dem Container entfernt, sondern sie stattdessen neu anordnet . Es verschiebt Elemente, die nicht entfernt werden sollen, an den Anfang des Containers und gibt einen Iterator zurück, der auf das nächste Element nach ihnen zeigt.

Um den Entfernungsprozess abzuschließen, übergeben Sie diesen Iterator an container_type::erase, der tatsächlich entfernt Die zusätzlichen Elemente befinden sich jetzt am Ende des Containers. Hier ist ein Beispiel:

std::vector<int> vec;
// Populate the vector...
int int_to_remove = n;
vec.erase(std::remove(vec.begin(), vec.end(), int_to_remove), vec.end());

Dieser Code verwendet zunächst std::remove, um nicht zu entfernende Elemente zu identifizieren und an den Anfang des Vektors zu verschieben. Anschließend wird vec.erase aufgerufen, um diese zusätzlichen Elemente dauerhaft aus dem Container zu entfernen.

Das obige ist der detaillierte Inhalt vonWie entferne ich Elemente mit einem bestimmten Wert aus einem STL-Vektor?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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