Rumah > pembangunan bahagian belakang > C++ > Adakah Elemen std::vector Dijamin Bersebelahan?

Adakah Elemen std::vector Dijamin Bersebelahan?

Patricia Arquette
Lepaskan: 2024-12-19 12:48:10
asal
808 orang telah melayarinya

Are std::vector Elements Guaranteed to Be Contiguous?

Keterkaitan Elemen std::vektor

Timbul persoalan sama ada elemen std::vektor dijamin bersebelahan, membolehkan penggunaan penunjuk elemen pertama vektor sebagai tatasusunan C. Walaupun kekurangan jaminan yang jelas dalam piawaian C 98, adalah sukar untuk memenuhi keperluan std::vektor tanpa keterkaitan.

Piawaian C 0x membetulkan peninggalan ini, seperti yang ditunjukkan dalam n2798:

"Vektor ialah bekas jujukan yang menyokong ... elemen vektor disimpan bersebelahan, bermakna jika v ialah vektor dengan T ialah beberapa jenis selain daripada bool, maka ia mematuhi identiti &v[n] == &v[0] n untuk semua 0 <= n

Ini mengesahkan bahawa std: :elemen vektor memang disimpan bersebelahan, membenarkan penggunaan penuding kepada elemen pertama sebagai tatasusunan C:

std::vector values;
// ... fill up values

if (!values.empty()) {
    int *array = &values[0];
    for (int i = 0; i < values.size(); ++i) {
        int v = array[i];
        // do something with 'v'
    }
}

Atas ialah kandungan terperinci Adakah Elemen std::vector Dijamin Bersebelahan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan