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
Libérer: 2025-01-31 02:01:09
original
900 Les gens l'ont consulté

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.

for (int i = safePendingList.Count - 1; i >= 0; i--)
{
    // Check removal condition
    if (shouldRemove)
    {
        safePendingList.RemoveAt(i);
    }
}
Copier après la connexion

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.

safePendingList.RemoveAll(item => item.Value == someValue);
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal