Bagaimana untuk Mengeluarkan Elemen dengan Selamat daripada std::vector Semasa Memulas?

Patricia Arquette
Lepaskan: 2024-11-02 02:52:30
asal
360 orang telah melayarinya

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

Mengalih keluar Elemen secara berkesan daripada std::vector Sambil Mengulang

Dalam bidang pengaturcaraan C, pembangun sering menghadapi cabaran untuk memanipulasi std ::vektor semasa merentasi unsur-unsurnya. Walaupun iterator menyediakan mekanisme yang mudah untuk tugas ini, perangkap biasa timbul apabila cuba mengalih keluar elemen semasa lelaran.

Pertimbangkan senario di mana std::vector digunakan untuk menyimpan senarai laluan ke fail. Matlamatnya adalah untuk memadam setiap fail dan mengalih keluar laluannya daripada vektor. Walau bagaimanapun, menggunakan kaedah tradisional, seperti kaedah erase(), membatalkan iterator selepas setiap pemadaman, merumitkan perjalanan selanjutnya.

Untuk mengatasi had ini, pembangun telah mencipta pendekatan yang lebih cekap. Kaedah erase(), apabila digunakan, bukan sahaja mengalih keluar elemen yang ditetapkan tetapi juga mengembalikan iterator baharu yang menunjuk ke elemen seterusnya. Tingkah laku unik ini membolehkan kesinambungan gelung yang lancar:

<code class="cpp">std::vector<std::string>::iterator iter;
for (iter = m_vPaths.begin(); iter != m_vPaths.end(); ) {
    if (::DeleteFile(iter->c_str()))
        iter = m_vPaths.erase(iter);
    else
        ++iter;
}</code>
Salin selepas log masuk

Dalam coretan kod ini, gelung diteruskan seperti yang dimaksudkan, dengan iter dikemas kini secara automatik untuk menghala ke elemen sah seterusnya selepas setiap pemadaman. Kaedah cekap ini menghapuskan keperluan untuk vektor tambahan dan menyelaraskan proses mengalih keluar elemen semasa lelaran.

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Elemen dengan Selamat daripada std::vector 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!