Rumah >pembangunan bahagian belakang >C++ >Adakah Menganggap Contiguity dalam STL Vectors Selamat Selepas Saiz semula?
Dalam C , Pustaka Templat Standard (STL) menyediakan struktur data yang berkuasa, termasuk kelas vektor. Walaupun mengubah saiz vektor adalah operasi biasa, kebimbangan timbul tentang keselamatan mengandaikan keterkaitan memori.
Persoalan yang dikemukakan ialah: "Jika vektor STL telah diubah saiznya, bolehkah kita menganggap bahawa menangani elemen 0 menyediakan akses kepada berturut-turut lokasi memori yang mengandungi elemen vektor yang tinggal?"
Menurut piawaian C 03 (23.2.4.1), jawapannya adalah Ya. Piawaian menyatakan bahawa elemen vektor disimpan secara bersebelahan, memastikan bahawa &v[n] == &v[0] n untuk semua 0 ≤ n < v.size().
Walau bagaimanapun, adalah penting untuk mengambil perhatian kaveat bahawa andaian ini berlaku hanya sehingga vektor diperuntukkan semula. Menambah elemen pada vektor boleh mencetuskan pengagihan semula, membatalkan mana-mana penunjuk atau iterator yang diperoleh daripada blok memori asal.
Oleh itu, walaupun selamat untuk mengandaikan keterkaitan sejurus selepas mengubah saiz, ia menjadi tidak selamat jika elemen kemudiannya ditambah atau dialih keluar, yang berpotensi menyebabkan vektor mengagihkan semula.
Atas ialah kandungan terperinci Adakah Menganggap Contiguity dalam STL Vectors Selamat Selepas Saiz semula?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!