Adakah Elemen std::vector Dijamin Bersebelahan?
Walaupun piawaian C 98 tidak secara eksplisit menjamin elemen bersebelahan dalam std: :vector, keperluan untuk std::vector menjadikannya sangat tidak mungkin unsur-unsur itu tidak bersebelahan. Walau bagaimanapun, ini kemudiannya dijelaskan sebagai keperluan dalam draf n2798 piawai C 0x.
Piawaian C 0x yang akan datang termasuk keperluan berikut:
A vector is a sequence container that supports random access iterators. In addition, it supports (amortized) constant time insert and erase operations at the end; insert and erase in the middle take linear time. Storage management is handled automatically, though hints can be given to improve efficiency. The elements of a vector are stored contiguously, meaning that if v is a vector where T is some type other than bool, then it obeys the identity &v[n] == &v[0] + n for all 0 <= n < v.size().
Ini bermakna anda boleh selamat gunakan penuding kepada elemen pertama std::vector sebagai C-array, seperti dalam contoh berikut:
std::vector<int> 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 Penyimpanan Elemen `std::vector` Dijamin Bersebelahan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!