Rumah >pembangunan bahagian belakang >C++ >Bagaimana cara mengeluarkan item dari senarai generik semasa lelaran?

Bagaimana cara mengeluarkan item dari senarai generik semasa lelaran?

Patricia Arquette
Patricia Arquetteasal
2025-01-31 02:01:09809semak imbas

How to Safely Remove Items from a Generic List During Iteration?

Mengelakkan kesilapan semasa mengeluarkan item dari senarai semasa lelaran:

Mengubah suai senarai semasa meleleh melalui ia sering membawa kepada "koleksi telah diubah suai; operasi penghitungan tidak boleh melaksanakan" ralat. Ini berlaku kerana mengeluarkan item membatalkan iterator. Inilah cara untuk menghapuskan elemen dengan selamat:

Kaedah 1: Penyebaran terbalik

Melangkah mundur menghalang isu indeks apabila mengeluarkan item. Pendekatan ini berfungsi dengan baik untuk kriteria penyingkiran mudah. ​​

<code class="language-csharp">for (int i = safePendingList.Count - 1; i >= 0; i--)
{
    // Check removal condition
    if (shouldRemove)
    {
        safePendingList.RemoveAt(i);
    }
}</code>

kaedah 2: kaedah RemoveAll

Untuk logik penyingkiran yang lebih kompleks, kaedah

menyediakan penyelesaian yang lebih bersih. Ia mengambil predikat (fungsi yang kembali benar jika item harus dikeluarkan) dan menghapuskan semua elemen yang sepadan. RemoveAll

<code class="language-csharp">safePendingList.RemoveAll(item => item.Value == someValue);</code>

Ringkasan:

Kaedah ini membolehkan penyingkiran elemen yang selamat dan cekap dari senarai semasa lelaran, menghapuskan risiko pengecualian runtime. Pilih kaedah yang paling sesuai untuk kriteria penyingkiran dan gaya pengekodan anda.

Atas ialah kandungan terperinci Bagaimana cara mengeluarkan item dari senarai generik semasa lelaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn