vector::insert(begin(), val) 在開頭插入元素,若容量足夠,現有元素向後移動 (位址改變);若容量不足,**觸發擴容**:分配新記憶體 (通常 2x),**將所有舊元素複製/移動到新記憶體**,釋放舊記憶體,**vector 內部指標 (首位址) 徹底改變**。
vector v = {1,2,3};
cout << v.data(); // 0x1000
v.insert(v.begin(), 0); // 可能擴容
cout << v.data(); // 可能變為 0x2000 (新記憶體塊)
v.reserve(n) 預先分配容量,避免頻繁擴容移動。deque (O(1) 雙端) 或 list (O(1) 插入)。「vector 首位址**不穩定**,擴容時會改變。僅在容量足夠且無擴容時,首位址不變,但元素仍會整體後移。」