Supprimer des éléments d'une carte lors d'une itération en C
Lorsque vous parcourez une carte et tentez de supprimer des éléments en fonction de conditions spécifiques, il est Il est important de considérer l’impact de l’effacement d’éléments sur l’itérateur. Effacer un élément lors d'une itération sur la carte invalidera l'itérateur, ce qui rendra difficile la poursuite du processus d'itération.
Idiome d'effacement standard pour les conteneurs associatifs
L'idiome standard pour effacer d'un conteneur associatif (comme une carte) pendant l'itération est comme suit :
for (auto it = m.cbegin(); it != m.cend() /* not hoisted */; /* no increment */) { if (must_delete) { m.erase(it++); // or "it = m.erase(it)" since C++11 } else { ++it; } }
Explication
En suivant cet idiome, vous pouvez supprimer en toute sécurité des éléments de la carte tout en itérer sans invalider les itérateurs.
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!