Актуально std :: вектор повинні використовуватися як вкладка C, коли це необхідно. (C ++ стандартні запити про те, що для реалізації вектора, наскільки я знаю - заміна масиву у Вікіпедії ) Наприклад, цілком легально робити це наступне, на мою думку:
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]);
}
Звичайно, або foo не повинен копіювати адресу, передану як параметр, і зберігати її кудись, або ви повинні забезпечити у своїй програмі ніколи не натискати жодного нового елемента в vec, або просити змінити його ємність. Або ризик помилки сегментації ...
Тому у вашому прикладі це призводить до
vector.insert(pos, &vec[first_index], &vec[last_index]);