首页 > 后端开发 > C++ > 如何在迭代时从通用列表中安全地删除元素?

如何在迭代时从通用列表中安全地删除元素?

Barbara Streisand
发布: 2025-01-31 01:46:09
原创
664 人浏览过

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

迭代过程中安全移除泛型列表元素

在许多编程场景中,需要处理列表中的元素。然而,如果在此过程中需要移除某些元素,标准方法可能会出现问题。

foreach循环中使用.Remove(element)会引发异常,而递减计数器并使用.RemoveAt(i)则会破坏当前集合位置。

更优雅的解决方案是反向迭代列表:

<code class="language-csharp">for (int i = safePendingList.Count - 1; i >= 0; i--)
{
    // 处理元素

    // 如需移除元素
    // safePendingList.RemoveAt(i);
}</code>
登录后复制

这确保了移除元素不会影响列表中的当前位置。

或者,RemoveAll方法允许根据谓词过滤掉元素:

<code class="language-csharp">safePendingList.RemoveAll(item => item.Value == someValue);</code>
登录后复制

以下示例演示了for循环方法的用法:

<code class="language-csharp">var list = new List<int>(Enumerable.Range(1, 10));
Console.WriteLine("Before:");
list.ForEach(i => Console.WriteLine(i));
list.RemoveAll(i => i > 5);
Console.WriteLine("After:");
list.ForEach(i => Console.WriteLine(i));</code>
登录后复制

输出:

<code>Before:
1
2
3
4
5
6
7
8
9
10
After:
1
2
3
4
5</code>
登录后复制

以上是如何在迭代时从通用列表中安全地删除元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板