C++ stl accumulate 函式的理解
阿新 • • 發佈:2019-01-05
首先看一個例程:
//eg.1
vector<int> vi{1, 2, 3};
cout << accumulate(vi.begin(), vi.end(), 0); // 6
可以看出accumulate 有三個引數:
第一個是起點;第二個是終點,第三個是初始值。
// eg.2
int ptotal;
ptotal = accumulate ( v3.begin ( ) , v3.end ( ) , 1 , multiplies<int>( ) );
第二個例程中出現第四個引數,表示操作符,除了可以使用系統自帶的加減乘除等操作外,還可以使用自定義的運演算法則,如下例程3所示.
//eg.3 #include <vector> #include <string> using namespace std; struct Grade { string name; int grade; }; int main() { Grade subject[3] = { { "English", 80 }, { "Biology", 70 }, { "History", 90 } }; int sum = accumulate(subject, subject + 3, 0, [](int a, Grade b){return a + b.grade; }); cout << sum << endl; system("pause"); return 0; }