Actdally std :: vector ใช้เพื่อเป็นแท็บ C เมื่อต้องการ (คำขอมาตรฐาน C ++ สำหรับการใช้งานเวกเตอร์เท่าที่ฉันรู้ - การแทนที่อาเรย์ใน Wikipedia ) ตัวอย่างเช่นมันถูกกฎหมายอย่างสมบูรณ์แบบที่จะทำสิ่งนี้ตามที่ฉัน:
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]);