Rumah > pembangunan bahagian belakang > C++ > Bolehkah Anda Mengalih Keluar Elemen daripada Vektor Semasa Untuk Gelung berasaskan Julat C 11?

Bolehkah Anda Mengalih Keluar Elemen daripada Vektor Semasa Untuk Gelung berasaskan Julat C 11?

Susan Sarandon
Lepaskan: 2024-12-02 13:07:12
asal
155 orang telah melayarinya

Can You Remove Elements from a Vector During a C  11 Range-based For Loop?

Mengurus Elemen Vektor dalam Rangkaian untuk Gelung

Dalam C 11, berasaskan julat untuk gelung menyediakan cara yang mudah untuk mengulangi unsur-unsur bekas. Walau bagaimanapun, operasi tertentu, seperti mengalih keluar elemen daripada vektor, menjadi bermasalah dalam gelung ini.

Bolehkah Elemen Dialih Keluar daripada Vektor semasa C 11 berasaskan Julat untuk Gelung?

Malangnya, tidak. Berasaskan julat untuk gelung direka untuk lelaran sekali bagi setiap elemen dalam bekas. Ia tidak sesuai untuk mengubah suai bekas itu sendiri, termasuk mengalih keluar elemen.

Alternatif untuk Penyingkiran Elemen:

Untuk mengalih keluar elemen daripada vektor dalam gelung, anda mesti menggunakan gelung tradisional atau variannya. Ini membenarkan pengubahsuaian dan lintasan bukan linear bekas.

Contoh:

auto i = std::begin(inv);

while (i != std::end(inv)) {
    // Do some stuff
    if (blah)
        i = inv.erase(i);
    else
        ++i;
}
Salin selepas log masuk

Dengan menggunakan fungsi std::begin dan std::end, gelung berulang ke atas vektor menggunakan iterator. Apabila elemen ditandakan untuk dialih keluar, fungsi padam dipanggil, yang membatalkan lelaran yang menunjuk ke elemen yang dialih keluar. Gelung kemudian diteruskan dengan memajukan lelaran.

Kesimpulannya, sementara berdasarkan julat untuk gelung menawarkan kemudahan penggunaan untuk lelaran baca sahaja, untuk operasi seperti mengalih keluar elemen daripada vektor, anda perlu menggunakan tradisional untuk gelung untuk mengekalkan kawalan ke atas pengubahsuaian kontena.

Atas ialah kandungan terperinci Bolehkah Anda Mengalih Keluar Elemen daripada Vektor Semasa Untuk Gelung berasaskan Julat C 11?. 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