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

Comment supprimer en toute sécurité et efficacement les éléments d'une liste générique tout en itérant?

Susan Sarandon
Libérer: 2025-01-31 01:51:09
original
520 Les gens l'ont consulté

How to Safely and Efficiently Remove Elements from a Generic List While Iterating?

La meilleure pratique de supprimer les éléments de la liste générique en toute sécurité et efficacement

Lorsque la liste générique itérative et exécutez l'opération qui peut avoir besoin de supprimer l'élément, il est important de choisir le mode d'itération approprié pour éviter les pièges communs. Par exemple, l'utilisation de

dans le cycle provoquera des anomalies, car la collection est modifiée pendant le processus d'énumération.

foreach Solution stable .Remove(element)

Afin de résoudre ce problème, il est recommandé d'utiliser la liste d'itération inverse cyclique. Cette méthode garantit que la position actuelle dans l'ensemble lors du retrait des éléments est exacte.

Exemple: for

<code class="language-csharp">for (int i = safePendingList.Count - 1; i >= 0; i--)
{
    // 处理元素
    // safependingList.RemoveAt(i);
}</code>
Copier après la connexion

Méthode alternative

Un autre choix consiste à utiliser les méthodes
<code class="language-csharp">var list = new List<int>(Enumerable.Range(1, 10));
for (int i = list.Count - 1; i >= 0; i--)
{
    if (list[i] > 5)
        list.RemoveAt(i);
}
list.ForEach(i => Console.WriteLine(i));</code>
Copier après la connexion
et à prédicat pour filtrer les éléments à supprimer. Cette méthode simplifie le processus et réduit les besoins de l'élimination manuelle des éléments dans le cycle.

Démonstration simplifiée:

RemoveAll

Ces technologies fournissent un mécanisme sûr et fiable pour supprimer en toute sécurité les éléments lorsque des listes génériques itératives pour garantir que le code s'exécute efficace et sans anomalies.
<code class="language-csharp">safePendingList.RemoveAll(item => item.Value == someValue);</code>
Copier après la connexion

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal