Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah Memori Vektor STL Bersebelahan Selepas Saiz semula?

Adakah Memori Vektor STL Bersebelahan Selepas Saiz semula?

Susan Sarandon
Susan Sarandonasal
2024-11-18 04:47:02690semak imbas

Is STL Vector Memory Contiguous After Resizing?

Andaian Storan Bersambung Vektor STL

Bolehkah kita menganggap bahawa unsur-unsur vektor STL yang diubah suai disimpan bersebelahan dalam ingatan?

Soalan:

Memandangkan saiz vektor STL vc, adakah selamat untuk menganggap bahawa alamat elemen pertama (&vc[0]) mewakili titik permulaan sesuatu blok memori bersebelahan yang diduduki oleh keseluruhan vektor?

Jawapan:

Ya, tetapi dengan kaveat.

Mengikut kepada piawai C 03 (23.2.4.1), elemen dalam vektor STL disimpan bersebelahan. Ini bermakna bagi mana-mana vektor v dengan jenis unsur T (selain bool), &vc[0] n bersamaan &vc[n] untuk semua nilai n antara 0 dan v.size() - 1.

Awas:

Walaupun andaian ini pada umumnya benar, adalah penting untuk mengetahui potensi pengagihan semula memori yang mungkin berlaku apabila menambahkan elemen pada vektor. Jika kapasiti vektor melebihi, data vektor mungkin dialihkan ke blok memori baharu, membatalkan sebarang penunjuk atau iterator sedia ada. Oleh itu, adalah penting untuk mempertimbangkan potensi pengagihan semula apabila bergantung pada andaian storan bersebelahan ini.

Atas ialah kandungan terperinci Adakah Memori Vektor STL Bersebelahan Selepas Saiz semula?. 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