Actutally std :: vector gerektiğinde C sekmesi olarak kullanılmak içindir. (C ++ standardı, vektör uygulaması için bildiğim kadarıyla istiyor - Wikipedia'da dizi için değiştirme ) Örneğin, bana göre bu çekim işlemini yapmak tamamen yasal:
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]);
}
Tabii ki, ya foo parametre olarak iletilen adresi kopyalamamalı ve bir yerde saklamamalıdır ya da programınızda vec'de hiçbir zaman yeni bir öğeyi itmemesini ya da kapasitesini değiştirmek istememesini sağlamalısınız. Veya risk bölümleme hatası ...
Bu nedenle, örnekleminizde
vector.insert(pos, &vec[first_index], &vec[last_index]);