vector num(10); // 已有 10 個 0
while (cin >> i) num.push_back(i); // 追加到後面
for (auto &n : num) n *= 2; // 前 10 個 0 變 0,後 10 個正常
vector 構造含 10 個元素(值為 0)的向量,而非預留容量。push_back 會在這 10 個元素之後追加。
vector num;
num.reserve(10); // 僅預留容量,size=0
int i;
while (cin >> i) num.push_back(i);
// 或直接
vector num(10);
for (int &x : num) cin >> x; // 覆蓋初始值
for (auto &n : num) 確實能修改原元素,但前提是元素已存在且非默認構造的佔位符。理解 size() 與 capacity() 的區別至關重要。