Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memastikan Keselamatan Apabila Menolak Elemen dari Vektor yang Sama?
Menolak Elemen daripada Vektor yang Sama: Langkah Keselamatan
Keselamatan menolak elemen daripada vektor yang sama bergantung pada potensi pengagihan semula , yang boleh membatalkan rujukan kepada elemen vektor sedia ada. Isu ini timbul dalam contoh berikut:
<code class="cpp">vector<int> v; v.push_back(1); v.push_back(v[0]);</code>
Jika tolak_balik kedua mencetuskan pengagihan semula, rujukan kepada v[0] menjadi tidak sah. Untuk menangani perkara ini, pendekatan berikut boleh digunakan:
<code class="cpp">vector<int> v; v.push_back(1); v.reserve(v.size() + 1); v.push_back(v[0]);</code>
Dengan memanggil rizab, kami secara eksplisit meminta memori yang mencukupi, memastikan tiada pengagihan semula berlaku semasa sisipan berikutnya.
Mengikut standard C , tingkah laku push_back berkenaan dengan rujukan elemen tidak ditakrifkan secara eksplisit sebagai kecacatan, walaupun ia berpotensi membawa kepada rujukan tidak sah. Ini kerana standard memerlukan vektor::insert untuk berfungsi dengan betul, walaupun apabila sisipan menukar kedudukan elemen lain.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Keselamatan Apabila Menolak Elemen dari Vektor yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!