Équivalent de Remove-If pour les cartes standards
Question :
En C, comment puis-je supprimer une plage d'éléments d'une carte en fonction d'une condition spécifiée à l'aide de la STL algorithme ?
Réponse :
Bien que l'algorithme Remove_if ne soit pas applicable aux conteneurs associatifs comme les cartes, il existe une approche équivalente utilisant des itérateurs. Voici comment procéder :
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; } } }
Explication :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!