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