Ä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; } } }
Erklärung:
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!