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
Susan Sarandonoriginal
2025-01-31 01:51:09521parcourir

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>

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>
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>

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