accumulate

来源:互联网 发布:mac os x 懒人版下载 编辑:程序博客网 时间:2024/05/16 11:25

C++ STL中有一个通用的数值类型计算函数— accumulate(),可以用来直接计算数组或者容器中C++内置数据类型,例如:

#include <numeric>
int arr[]={10,20,30,40,50};
vector
<int> va(&arr[0],&arr[5]);
int sum=accumulate(va.begin(),va.end(),0); //sum = 150,默认操作是"累加"
 
实例一:
#include <iostream>#include <numeric>using namespace std;int main() {    int x[] = {1,2,3,4,5};    // 1 * 2 * 3 * 4 * 5 and * 1    int sum = accumulate(x, x+5, 1, multiplies<int>());    cout << "sum = " << sum << endl;    // 1 * 2 * 3 * 4 * 5 and * 2    sum = accumulate(x, x+5, 2, multiplies<int>());    cout << "sum = " << sum << endl;    // 2 * 3 * 4 and * 10    sum = accumulate(x+2, x+4, 10, multiplies<int>());    cout << "sum = " << sum << endl;system("pause");    return 0;}/*Output:sum = 120sum = 240sum = 120请按任意键继续. . .*/

 
实例二:
#include <iostream>#include <numeric>#include <vector>#include <string>using namespace std;struct Student{       string name;       int total;};class PS{ public:        int operator()(int t1,const Student& t2)        {            return (t1 + t2.total);        }        };int main(){    Student student[3]={            {"hicjiajia",10},            {"sijikaoshi",20},            {"what",40}            };        int sum=accumulate(&student[0],&student[3],0,PS());    cout<<"sum = "<<sum<<endl;    system("pause");    return 0;}/*Output:sum = 70请按任意键继续. . .*/

原创粉丝点击