Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Memastikan Keselamatan Apabila Menolak Elemen dari Vektor yang Sama?

Bagaimana untuk Memastikan Keselamatan Apabila Menolak Elemen dari Vektor yang Sama?

Linda Hamilton
Linda Hamiltonasal
2024-10-26 11:17:30664semak imbas

How to Ensure Safety When Pushing Elements from the Same Vector?

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!

Kenyataan:
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