Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Elemente aus einem C-Vektor basierend auf ihrem Wert und nicht auf der Position entfernen?

Wie kann ich Elemente aus einem C-Vektor basierend auf ihrem Wert und nicht auf der Position entfernen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-11 01:40:03849Durchsuche

How Can I Remove Elements from a C   Vector Based on Their Value, Not Position?

Entfernen von Vektorelementen nach Wert, nicht nach Position

In C ist es beim Umgang mit Vektoren üblich, Elemente anhand ihrer Position innerhalb des Vektors zu entfernen. Beispielsweise entfernt myVector.erase(myVector.begin() 4) das vierte Element.

Es kann jedoch vorkommen, dass es bequemer ist, Elemente basierend auf ihrem Wert statt auf der Position zu entfernen. Um dies zu erreichen, können wir die Leistungsfähigkeit des std::remove()-Algorithmus nutzen.

Der std::remove()-Algorithmus

Der std::remove()-Algorithmus ist ein leistungsstarker Werkzeug, mit dem bestimmte Elemente aus einer Reihe von Iteratoren entfernt werden können. Seine Syntax lautet wie folgt:

template <typename ForwardIterator, typename T>
ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& value);

wobei:

  • first und last Iteratoren sind, die den Bereich der Elemente darstellen, nach denen nach dem Wert gesucht werden soll.
  • Wert ist der Wert, der aus dem Bereich entfernt werden soll.

Beispielverwendung

Um alle Elemente mit dem Wert „8“ aus unserem Vektor zu entfernen, können wir den folgenden Code verwenden:

#include <algorithm>
...
vec.erase(std::remove(vec.begin(), vec.end(), 8), vec.end());

Diese Kombination aus std::remove() und erase() wird allgemein als Erase-Remove-Idiom bezeichnet. Dies ist eine effiziente und bequeme Möglichkeit, Elemente nach Wert aus einem Vektor zu entfernen.

Das obige ist der detaillierte Inhalt vonWie kann ich Elemente aus einem C-Vektor basierend auf ihrem Wert und nicht auf der Position entfernen?. 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