C++ Primer第五版 P99頁
練習3.23:編寫一段程序,創建一個含有10個整數的vector對象, 然後使用迭代器將所有元素的值都變成原來的兩倍。輸出vector對象的內容,檢驗程序是否正確。
我的答案:
#include
#include
using namespace std;
int main()
{
vector num(10);
int i;
while (cin >> i)
{
num.push_back(i);
}
for (auto &n : num)
{ n =n*2;
cout << n << " ";
}
cout << endl;
return 0;
}
但是輸入:1 2 3 4 5 6 7 8 9 10
得到的結果是:0 0 0 0 0 0 0 0 0 0 2 4 6 8 10 12 14 16 18 20
為什麼還會出現10個0;難道范圍for循環中的引用沒有覆蓋掉原來的0嗎?
vector是一個動態增長的數組,vector num(10) 意思就是向裡面添加10個默認為0的元素,而不是像數組 int num[10]這裡的10是指定長度;
while循環裡添加的都在那10個0後面。