首頁 >後端開發 >C++ >如何在迭代時從通用列表中安全地刪除元素?

如何在迭代時從通用列表中安全地刪除元素?

Barbara Streisand
Barbara Streisand原創
2025-01-31 01:46:09731瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn