Thực tế std :: vector có nghĩa là được sử dụng như tab C khi cần thiết. (Theo yêu cầu tiêu chuẩn của C ++, theo như tôi biết - thay thế cho mảng trong Wikipedia ) Chẳng hạn, việc làm theo cách này là hoàn toàn hợp pháp, theo tôi:
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]);
}
Tất nhiên, foo không được sao chép địa chỉ được truyền dưới dạng tham số và lưu trữ ở đâu đó hoặc bạn nên đảm bảo trong chương trình của mình không bao giờ đẩy bất kỳ mục mới nào trong vec hoặc yêu cầu thay đổi dung lượng. Hoặc lỗi phân khúc rủi ro ...
Do đó, trong ví dụ của bạn, nó dẫn đến
vector.insert(pos, &vec[first_index], &vec[last_index]);