Maison > Article > développement back-end > Comment supprimer en toute sécurité des éléments d'un std :: vector lors d'une itération ?
Supprimer efficacement des éléments de std :: vector lors de l'itération
Dans le domaine de la programmation C, les développeurs sont souvent confrontés au défi de manipuler un std ::vecteur en parcourant ses éléments. Bien que les itérateurs fournissent un mécanisme pratique pour cette tâche, un piège courant survient lorsque l'on tente de supprimer des éléments au cours d'une itération.
Considérez le scénario dans lequel un std::vector
Pour surmonter cette limitation, les développeurs ont conçu une approche plus efficace. La méthode delete(), lorsqu'elle est invoquée, supprime non seulement l'élément désigné mais renvoie également un nouvel itérateur pointant vers l'élément suivant. Ce comportement unique permet une poursuite fluide de la boucle :
<code class="cpp">std::vector<std::string>::iterator iter; for (iter = m_vPaths.begin(); iter != m_vPaths.end(); ) { if (::DeleteFile(iter->c_str())) iter = m_vPaths.erase(iter); else ++iter; }</code>
Dans cet extrait de code, la boucle continue comme prévu, iter étant automatiquement mis à jour pour pointer vers le prochain élément valide après chaque suppression. Cette méthode efficace élimine le besoin d'un vecteur supplémentaire et rationalise le processus de suppression d'éléments lors de l'itération.
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!