Mengalih keluar Elemen daripada Peta Semasa Lelaran
Apabila melelaran melalui peta, pendekatan biasa ialah menggunakan gelung berasaskan julat. Walau bagaimanapun, mengubah suai peta semasa lelaran boleh membawa kepada tingkah laku yang tidak dijangka, kerana lelaran akan menjadi tidak sah.
Teknik yang disyorkan untuk mengalih keluar elemen daripada peta semasa mengulang dikenali sebagai "simpulan bahasa pemadam bekas bersekutu":
for (auto it = m.cbegin(); it != m.cend() /* not hoisted */; /* no increment */) { if (must_delete) { m.erase(it++); // or "it = m.erase(it)" since C++11 } else { ++it; } }
Idiom ini memastikan bahawa lelaran kekal sah selepas elemen dialih keluar dengan menggunakan penambahan awalan operator.
Ambil perhatian bahawa adalah penting untuk menggunakan gelung tradisional dan bukannya gelung berasaskan julat dalam kes ini, kerana mengubah suai bekas akan membatalkan lelaran bagi gelung berasaskan julat.
Sebelum C 11, adalah perlu untuk menggunakan jenis lelaran yang berasingan apabila melelaran melalui peta untuk mengalih keluar elemen:
for (std::map<K, V>::iterator it = m.begin(); it != m.end(); ) { /* ... */ }
Dalam kedua-dua kes, memadamkan elemen tidak melanggar keteguhan elemen, kerana keteguhan dalam C tidak menjejaskan hayat objek.
Atas ialah kandungan terperinci Bagaimana untuk Mengalih Keluar Elemen dengan Selamat daripada Peta C Semasa Lelaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!