/*求个阶乘*/
#include<iostream>
#include<numeric> //包含数值算法的头文件 1、2
#include<functional> //包含标准函数对象头对象(利用普通函数来定义函数对象,利用类来定义函数对象可以不用包含) 3
using namespace std;
/*
//利用普通函数来定义函数对象 1
int mul(int x,int y){
return x * y;
}
*/
/*
//利用类来定义函数对象 2
class Mul{
public:
int operator()(int x,int y){ //重载操作符operator()
return x * y;
}
};
*/
int main(){
int a[5] = {1,2,3,4,5};
const int N = sizeof(a)/sizeof(int);
// cout<<"result is:"<<accumulate(a,a+N,1,mul)<<endl; //将普通函数传递给通用算法 1
// cout<<"result is:"<<accumulate(a,a+N,1,Mul())<<endl; //将类传递给通用算法 2
cout<<"result is:"<<accumulate(a,a+N,1,multiplies<int>())<<endl; //将标准函数对象传递给通用算法 3
return 0;
}