Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengalih keluar Item dengan Selamat daripada Peta C Semasa Lelaran?

Bagaimana untuk Mengalih keluar Item dengan Selamat daripada Peta C Semasa Lelaran?

Mary-Kate Olsen
Lepaskan: 2024-12-11 00:38:09
asal
411 orang telah melayarinya

How to Safely Remove Items from a C   Map During Iteration?

Mengalih keluar Item daripada Peta Semasa Lelaran dalam C

Apabila melelaran melalui peta dan cuba mengalih keluar item berdasarkan syarat tertentu, ia adalah penting untuk mempertimbangkan kesan pemadaman elemen pada iterator. Memadamkan elemen semasa mengulangi peta akan membatalkan lelaran, menjadikannya sukar untuk meneruskan proses lelaran.

Idiom Pemadaman Piawai untuk Bekas Bersekutu

Simpul bahasa standard untuk memadam daripada bekas bersekutu (seperti peta) manakala lelaran adalah sebagai berikut:

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;
  }
}
Salin selepas log masuk

Penjelasan

  • Nyahhois keadaan gelung: Ini memastikan gelung menyemak penghujung peta setiap kali melalui.
  • Tidak menambah lelaran dalam penyingkiran case: Apabila elemen dialih keluar, iterator menunjuk ke elemen seterusnya dalam peta. Ini bermakna gelung tidak seharusnya menambah lelaran selepas dipadamkan.
  • Pelajar Const: Dalam pra-C 11, lelaran const tidak dapat dipadamkan. Dalam kes ini, lelaran tradisional (cth., std::map::iterator) harus digunakan.

Dengan mengikuti simpulan bahasa ini, anda boleh mengalih keluar item daripada peta dengan selamat semasa lelaran tanpa membatalkan lelaran.

Atas ialah kandungan terperinci Bagaimana untuk Mengalih keluar Item dengan Selamat daripada Peta C Semasa Lelaran?. 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