Heim > Backend-Entwicklung > C++ > Wie entferne ich Elemente aus einer C-Standardkarte basierend auf einer Bedingung?

Wie entferne ich Elemente aus einer C-Standardkarte basierend auf einer Bedingung?

Susan Sarandon
Freigeben: 2024-12-02 17:31:14
Original
421 Leute haben es durchsucht

How to Remove Elements from a C   Standard Map Based on a Condition?

Äquivalent von Remove-If für Standardkarten

Frage:

In C, wie Kann ich mithilfe der STL eine Reihe von Elementen basierend auf einer angegebenen Bedingung aus einer Karte entfernen? Algorithmus?

Antwort:

Während der Algorithmus „remove_if“ nicht auf assoziative Container wie Karten anwendbar ist, gibt es einen gleichwertigen Ansatz mit Iteratoren. So können Sie es machen:

bool predicate(const std::pair<int, std::string>& x) {
    return x.first > 2;
}

int main() {
    std::map<int, std::string> aMap;

    // Populate the map...

    std::map<int, std::string>::iterator iter = aMap.begin();
    std::map<int, std::string>::iterator endIter = aMap.end();

    for (; iter != endIter;) {
        if (predicate(*iter)) {
            // Here, increment iter after erasing
            iter = aMap.erase(iter);
        } else {
            ++iter;
        }
    }
}
Nach dem Login kopieren

Erklärung:

  • Der Code verwendet eine Schleife, um die Karte zu durchlaufen.
  • Wenn ein Element die Bedingung erfüllt, wird der Iterator erhöht, nachdem dieses Element mithilfe der Löschfunktion gelöscht wurde Methode.
  • Dies verhindert das Überspringen von Elementen, die gelöscht werden sollten.
  • Das Aktualisieren des Iterators nach dem Löschen stellt sicher, dass die Schleife korrekt fortgesetzt wird, da Iteratoren nach dem Löschen eines Elements möglicherweise ungültig werden.

Das obige ist der detaillierte Inhalt vonWie entferne ich Elemente aus einer C-Standardkarte basierend auf einer Bedingung?. 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