Actualmente std :: vector están destinados a ser utilizados como pestaña C cuando sea necesario. (El estándar C ++ solicita que para la implementación de vectores, que yo sepa, reemplazo de la matriz en Wikipedia ) Por ejemplo, es perfectamente legal hacer lo siguiente, según yo:
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]);
}
Por supuesto, foo no debe copiar la dirección pasada como parámetro y almacenarla en algún lugar, o debe asegurarse en su programa de no insertar nunca ningún elemento nuevo en vec o solicitar cambiar su capacidad. O falla de segmentación de riesgo ...
Por lo tanto, en su ejemplo conduce a
vector.insert(pos, &vec[first_index], &vec[last_index]);