Heim > Backend-Entwicklung > C++ > Hauptteil

Wie verwende ich das Erase-Remove-Idiom korrekt zum Entfernen von Paaren in einem Vektor basierend auf einem bestimmten ersten Element?

Patricia Arquette
Freigeben: 2024-11-13 03:29:02
Original
839 Leute haben es durchsucht

How to Correctly Use the Erase-Remove Idiom for Removing Pairs in a Vector Based on a Specific First Element?

Verwendung des Erase-Remove-Idioms mit Paarcontainern

Angenommen, wir haben einen Vektor von Paaren >, wobei das erste Element einen Wert und das zweite eine Aufzählungsrichtung angibt. Um bestimmte Paare basierend auf ihrem ersten Element zu entfernen, ist das Erase-Remove-Idiom ein geeigneter Ansatz.

Wie in der Frage gezeigt, führt das Entfernen von Paaren mit einem ersten Wert von 4 jedoch zu unerwartetem Verhalten. Um dies zu beheben, müssen wir der Funktion std::erase den richtigen Bereich bereitstellen.

Der verbesserte Code sieht folgendermaßen aus:

stopPoints.erase(std::remove_if(stopPoints.begin(),
                                stopPoints.end(),
                                [](const stopPointPair stopPoint) -> bool 
                                       { return stopPoint.first == 4; }), 
                 stopPoints.end());
Nach dem Login kopieren

Hier erfahren Sie, warum dies korrekt funktioniert:

  • std::remove_if: Diese Funktion benötigt einen Bereich (vom Anfang bis zum Ende des Vektors) und ein Prädikat-Lambda, das prüft, ob das erste Element des Paars gleich 4 ist. Es ordnet die Elemente im Vektor so neu an, dass alle übereinstimmenden Paare am Ende stehen.
  • Zurückgegebener Iterator: Das Ergebnis von std::remove_if ist ein Iterator, der auf das erste Element zeigt, das mit dem Prädikat übereinstimmt (d. h. das erste zu entfernende Element).
  • std::erase: Die Erase-Funktion löscht einen Bereich beginnend mit dem von std::remove_if zurückgegebenen Iterator bis zum Ende des Vektors . Folglich werden alle passenden Paare eliminiert.

Durch die Angabe des richtigen Bereichs im std::erase-Aufruf stellen wir sicher, dass alle Paare mit dem angegebenen ersten Wert effektiv entfernt werden.

Das obige ist der detaillierte Inhalt vonWie verwende ich das Erase-Remove-Idiom korrekt zum Entfernen von Paaren in einem Vektor basierend auf einem bestimmten ersten Element?. 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