程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-C++ Primer第五版 范圍for循環引用,迭代器問題

c++-C++ Primer第五版 范圍for循環引用,迭代器問題

編輯:編程綜合問答
C++ Primer第五版 范圍for循環引用,迭代器問題

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後面。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved