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

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

Barbara Streisand
發布: 2025-01-31 01:46:09
原創
766 人瀏覽過

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

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

在許多編程場景中,需要處理列表中的元素。然而,如果在此過程中需要移除某些元素,標準方法可能會出現問題。

foreach循環中使用.Remove(element)會引發異常,而遞減計數器並使用.RemoveAt(i)則會破壞當前集合位置。

更優雅的解決方案是反向迭代列表:

for (int i = safePendingList.Count - 1; i >= 0; i--)
{
    // 处理元素

    // 如需移除元素
    // safePendingList.RemoveAt(i);
}
登入後複製

這確保了移除元素不會影響列表中的當前位置。

或者,RemoveAll方法允許根據謂詞過濾掉元素:

safePendingList.RemoveAll(item => item.Value == someValue);
登入後複製

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

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>Before:
1
2
3
4
5
6
7
8
9
10
After:
1
2
3
4
5</code>
登入後複製

以上是如何在迭代時從通用列表中安全地刪除元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板