2011-10-09 119 views
1

剛開始學習C++中的算法。我的書提到了一個在數字標題中定義的簡單的只讀算法。它有三個參數,第一個是迭代器,用於指定範圍或元素的總和,第三個是總和的初始值。然而,當我嘗試這樣做:累積算法不正確的總和

#include <iostream> 
#include <vector> 
#include <algorithm> 
#include <numeric> 
using namespace std; 

int main() { 

vector<int> numbers; 

//Fill vector with numbers. 
for (vector<int>::size_type i = 0; i != 10; i++) { 
    numbers.push_back(i); 
} 

int sum = accumulate(numbers.begin(), numbers.end(), 1); 
cout << numbers.size() << endl; 
cout << sum << endl; 

system("PAUSE"); 

return 0; 
} 

我得到的輸出爲:10,46。10加1是怎麼樣的46?我無法看到我的錯誤,感謝您的洞察力。

+0

10加1不等於46.這不是你所要的加入。 –

+1

如果你想添加10和1,有一個更簡單的方法:'int sum = 10 + 1;'。 –

+1

@ R.MartinhoFernandes更簡單的是將** 11 **分配給'sum':D – Mahesh

回答

6

你理解算法不正確。 std :: accumulate結果元素的總和。現在,矢量有0-9個數字。所以,0-9數字的總和是45,加1(第三個參數傳給你的算法是1)結果46.

+0

是的,我認爲它是總結元素的數量而不是累計值。 –