C++ 6.0 時代常用 memcpy 手動擴容數組,既繁瑣又易出錯。現代 C++ 標準庫 std::vector 提供自動擴容、內存管理、隨機訪問,效率與手寫代碼持平甚至更優(受益於移動語義、小對象優化)。
memcpy 僅適用於 POD 類型,含構造/析構函數的對象會導致未定義行為#include <vector>
#include <iostream>
int main() {
std::vector<int> vec;
int x;
while (std::cin >> x) {
vec.push_back(x); // 自動擴容,均攤 O(1)
}
for (int v : vec) std::cout << v << ' ';
return 0;
}
push_back 均攤常數時間,擴容策略通常為 2倍(實現相關)reserve(n) 減少重分配除非嵌入式極度受限環境無法使用 STL,**永遠優先選擇 std::vector**。這是現代 C++ 核心準則(C++ Core Guidelines)強烈推薦的做法。