Rumah >pembangunan bahagian belakang >C++ >Bolehkah Kita Mengeluarkan Elemen daripada Vektor Di Dalam Julat C 11 Berasaskan Gelung?
Mengalih keluar Elemen daripada Vektor dalam Gelung Berasaskan Julat C 11
Dalam C 11, berdasarkan julat untuk gelung menawarkan cara mudah untuk mengulang melalui elemen kontena. Walau bagaimanapun, mengalih keluar elemen daripada bekas dalam gelung ini menimbulkan cabaran.
Pertimbangkan kod berikut:
std::vector<IInventory*> inv; inv.push_back(new Foo()); inv.push_back(new Bar()); for (IInventory* index : inv) { // Do some stuff // I need to remove this object from 'inv'... }
Bolehkah Kami Mengalih Keluar Elemen Dalam Gelung Berasaskan Julat?
Tidak, anda tidak boleh mengalih keluar elemen daripada vektor dalam julat untuk gelung. Ini kerana gelung beroperasi dengan mencipta salinan lelaran vektor, yang menjadi tidak sah jika elemen dialih keluar atau ditambah.
Oleh itu, adalah penting untuk mempertimbangkan pendekatan alternatif untuk mengubah suai bekas semasa lelaran.
Penyelesaian Disyorkan
Pendekatan yang disyorkan ialah menggunakan gelung tradisional atau salah satu daripadanya varian. Ini membolehkan anda memanipulasi vektor secara langsung dan mengalih keluar elemen seperti yang diperlukan. Contohnya:
auto i = std::begin(inv); while (i != std::end(inv)) { // Do some stuff if (blah) i = inv.erase(i); else ++i; }
Atas ialah kandungan terperinci Bolehkah Kita Mengeluarkan Elemen daripada Vektor Di Dalam Julat C 11 Berasaskan Gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!