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; } }
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!