Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengalih Keluar Elemen dengan Selamat daripada senarai C std::Semasa Memulas?

Bagaimana untuk Mengalih Keluar Elemen dengan Selamat daripada senarai C std::Semasa Memulas?

Linda Hamilton
Lepaskan: 2024-12-24 14:07:16
asal
172 orang telah melayarinya

How to Safely Remove Elements from a C   std::list While Iterating?

Penyingkiran Elemen Berulang dalam C std::List

Dalam C , std::list ialah bekas yang menyediakan data senarai terpaut dua kali struktur. Semasa mengulangi senarai, anda mungkin perlu mengalih keluar elemen berdasarkan syarat tertentu. Isu ini timbul apabila mengalih keluar item secara langsung dalam gelung lelaran mengakibatkan ralat "Lelang senarai tidak boleh ditambah".

Untuk menyelesaikan isu ini, adalah penting untuk menambah lelaran (i ) terlebih dahulu sebelum mengalih keluar elemen sebelumnya. Ini boleh dicapai dengan menggunakan gelung sementara seperti berikut:

std::list<item*>::iterator i = items.begin();
while (i != items.end())
{
    bool isActive = (*i)->update();
    if (!isActive)
    {
        items.erase(i++); // alternatively, i = items.erase(i);
    }
    else
    {
        other_code_involving(*i);
        ++i;
    }
}
Salin selepas log masuk

Dalam kod yang disemak ini, iterator i ditambah di dalam gelung, membenarkan operasi items.erase(i ) berjaya mengalih keluar elemen sebelumnya . Sebagai alternatif, i boleh digantikan dengan i = items.erase(i) untuk kesan yang sama.

Dengan melaksanakan pendekatan ini, item boleh dialih keluar dengan cekap dan serta-merta selepas memenuhi syarat yang dikehendaki, menghapuskan keperluan untuk pas tambahan melalui senarai.

Atas ialah kandungan terperinci Bagaimana untuk Mengalih Keluar Elemen dengan Selamat daripada senarai C std::Semasa Memulas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan