Sebenarnya std :: vector dimaksudkan untuk digunakan sebagai tab C saat dibutuhkan. (C ++ permintaan standar untuk implementasi vektor, sejauh yang saya tahu - penggantian untuk array di Wikipedia ) Sebagai contoh, adalah sah untuk melakukan hal ini, menurut saya:
int main()
{
void foo(const char *);
sdt::vector<char> vec;
vec.push_back('h');
vec.push_back('e');
vec.push_back('l');
vec.push_back('l');
vec.push_back('o');
vec.push_back('/0');
foo(&vec[0]);
}
Tentu saja, baik foo tidak boleh menyalin alamat yang dilewatkan sebagai parameter dan menyimpannya di suatu tempat, atau Anda harus memastikan dalam program Anda untuk tidak pernah mendorong item baru dalam vec, atau meminta untuk mengubah kapasitasnya. Atau kesalahan segmentasi risiko ...
Karena itu dalam contoh Anda itu mengarah ke
vector.insert(pos, &vec[first_index], &vec[last_index]);