Maison >développement back-end >C++ >Comment supprimer en toute sécurité les éléments d'une liste générique pendant l'itération?

Comment supprimer en toute sécurité les éléments d'une liste générique pendant l'itération?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-31 02:01:09875parcourir

How to Safely Remove Items from a Generic List During Iteration?

Éviter les erreurs lors de la suppression des éléments d'une liste pendant l'itération:

Modification d'une liste alors que l'itération de celui-ci conduit souvent à la "collection a été modifiée; l'opération d'énumération peut ne pas exécuter l'erreur". Cela se produit parce que la suppression d'un élément invalide l'itérateur. Voici comment supprimer en toute sécurité les éléments:

Méthode 1: itération inverse

itérer en arrière empêche les problèmes d'index lors de la suppression des éléments. Cette approche fonctionne bien pour les critères d'élimination simples.

<code class="language-csharp">for (int i = safePendingList.Count - 1; i >= 0; i--)
{
    // Check removal condition
    if (shouldRemove)
    {
        safePendingList.RemoveAt(i);
    }
}</code>

Méthode 2: RemoveAll Méthode

Pour une logique de suppression plus complexe, la méthode RemoveAll fournit une solution plus propre. Il faut un prédicat (une fonction qui renvoie vrai si un élément doit être supprimé) et supprime efficacement tous les éléments correspondants.

<code class="language-csharp">safePendingList.RemoveAll(item => item.Value == someValue);</code>

Résumé:

Ces méthodes permettent une élimination sûre et efficace des éléments d'une liste pendant l'itération, éliminant le risque d'exceptions d'exécution. Choisissez la méthode la mieux adaptée à vos critères de suppression et à votre style de codage.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn