Mengalih keluar Elemen daripada Vektor Semasa Gelung Berasaskan Julat C 11
Berasaskan julat untuk gelung dalam C 11 menyediakan cara yang mudah untuk mengulang elemen bekas, terutamanya apabila anda perlu melakukan tindakan pada setiap elemen. Walau bagaimanapun, apabila berurusan dengan vektor, kadangkala anda mungkin perlu mengalih keluar elemen daripada vektor sambil melelang ke atasnya.
Masalah
Pertimbangkan kod berikut:
std::vector<IInventory*> inv; inv.push_back(new Foo()); inv.push_back(new Bar()); for (IInventory* index : inv) { // Do some stuff // ... }
Di dalam gelung, anda menyedari bahawa anda perlu mengalih keluar elemen tertentu daripada inv vektor. Walau bagaimanapun, anda menghadapi dua isu:
Penyelesaian
Berasaskan julat untuk gelung bertujuan untuk situasi di mana anda perlu mengakses setiap elemen bekas sekali sahaja. Jika anda perlu mengubah suai atau mengalih keluar elemen semasa lelaran, anda harus menggunakan gelung tradisional untuk atau salah satu variasi berasaskan lelarannya.
Begini cara anda boleh mengubah suai kod menggunakan gelung tradisional untuk dengan pengurusan kenaikan lelaran:
for (auto i = inv.begin(); i != inv.end(); /*++i*/) { // Do stuff if (should_remove) { i = inv.erase(i); } else { ++i; } }
Dengan menguruskan kenaikan lelaran secara eksplisit, anda mengekalkan kesahihan gelung dan memastikan anda boleh mengalih keluar dan mengubah suai elemen tanpa menghadapi sebarang ralat.
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Elemen dengan Selamat daripada Vektor Semasa Mengulang dalam C 11?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!