Na verdade, std :: vector deve ser usado como guia C quando necessário. (O padrão C ++ solicita isso para implementação de vetores, tanto quanto eu sei - substituindo o array na Wikipedia ). Por exemplo, é perfeitamente legal fazer isso a seguir, de acordo com mim:
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]);
}
Obviamente, o foo não deve copiar o endereço passado como parâmetro e armazená-lo em algum lugar, ou você deve garantir em seu programa que nunca forneça nenhum item novo no vec ou solicite a alteração de sua capacidade. Ou falha na segmentação de risco ...
Portanto, no seu exemplo, isso leva a
vector.insert(pos, &vec[first_index], &vec[last_index]);