C++には標準でaccumulateありました。ごめんなさい。
コメント欄で教えてもらいましたが、C++も自分で書く必要はなかったようです。さすがは変態言語。
#include<vector> #include<list> #include<string> #include<iostream> #include<numeric> //accumulate #include<functional> //multipliesなど using namespace std; int main(){ //iterator渡しなのでvectorでもおk vector<int> vec(10); for( int i=0; i<10; i++ ){ vec[i] = i+1; } //デフォルトでは加算 cout << accumulate(vec.begin(), vec.end(), 0) << endl; //multipliesとかも渡せる。 list<int> ls; for( int i=0; i<5; i++ ){ ls.push_back(i+1); } cout << accumulate(ls.begin(), ls.end(), 1, multiplies<int>()) << endl; //iterator渡しということは、ポインタ渡してもおkwwww string array[] = { "a", "b", "c" }; string empty(""); cout << accumulate(array, array+3, empty) << endl; return 0; }