① 没有。 因为不需要,因为可以通过accumulate得到product(即乘积)(通过模板函数multiplies)。 其实:求和是sum,求积是product,都包含在accumulate(累积)的意思里面,不同的初值,不同的作用函数(求和用的缺省函数plus<int>())得到不同的结果。
② 代码如下:
#include <iostream>
#include <functional>
#include <numeric>
using namespace std;
int main(int argc, char const *argv[])
{
int arr[] = {1,2,3,4,5,6,7,8,9};
size_t size = sizeof(arr)/sizeof(arr[0]);
cout << accumulate (arr, arr+size,0) << endl;
cout << accumulate (arr, arr+size,1,multiplies<int>()) << endl;
return 0;
}
运行:
45
362880