Maison >développement back-end >C++ >Comment supprimer en toute sécurité les éléments d'une liste générique tout en itérant?
Dans de nombreux scénarios de programmation, les éléments de la liste doivent être traités. Cependant, si certains éléments doivent être supprimés au cours de ce processus, la méthode standard peut avoir des problèmes.
L'utilisation de
dans le cycle provoquera des anomalies, et le compteur décroissant et l'utilisation détruira la position de set actuelle. foreach
.Remove(element)
Une solution plus élégante est la liste des itérations inverses: .RemoveAt(i)
Cela garantit que l'élément de suppression n'affecte pas la position actuelle dans la liste.
<code class="language-csharp">for (int i = safePendingList.Count - 1; i >= 0; i--) { // 处理元素 // 如需移除元素 // safePendingList.RemoveAt(i); }</code>ou, La méthode permet de filtrer l'élément en fonction du prédicat:
L'exemple suivant démontre l'utilisation de la méthode du cycle RemoveAll
:
<code class="language-csharp">safePendingList.RemoveAll(item => item.Value == someValue);</code>
Sortie:
for
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!