C++中STL---accumulate累积函数

    科技2022-07-16  113

    accumulate:                      功能描述:计算区间内 容器元素累计总和(也可以对自定义数据类型进行累计)                          算法简介:accumulate(iterator beg, iterator end, value);    //计算容器元素累计总和                                                                                                          //[beg,end)为起始迭代器和结束迭代器,vaule为起始值                                 总结:accumulate使用时头文件注意是 numeric ,这个算法很实用

    函数原型:

    template< class InputIt, class T >T //此时可以自定义数据类型 accumulate( InputIt first, InputIt last, T init ); template< class InputIt, class T, class BinaryOperation >T accumulate( InputIt first,InputIt last,T init,BinaryOperation op)

    当对自定义数据类型进行累加时,需要在第三个参数中指定自定义类型的数据处理方式。如:

    string sum = accumulate(v.begin() , v.end() , string(" "));  

    这个函数调用的效果是:从空字符串开始,把vec里的每个元素连接成一个字符串。

    案例:使用accumulate(iterator beg, iterator end, value)函数计算vector容器中所有元素(0-100)的和,其初始值为1000

    #include<iostream> #include<vector> #include<string> #include<numeric> using namespace std; // 常用算术生成算法: accumulate(iterator beg, iterator end, value); 计算[beg,end)区间中所有元素的和 // all = value + sum(beg,end) void test01(){ vector<int> vec; for(int i=0; i<=100; i++){ vec.push_back(i); } vector<string> vecs; vecs.push_back("Hello"); vecs.push_back("World"); vecs.push_back("!"); // 对string类型进行累积 string sunStr = accumulate(vecs.begin(), vecs.end(), string("")); // 计算vec容器中所有元素的总和 int sumNum = accumulate(vec.begin(), vec.end(), 1000); cout << "vec容器中元素的总和为:" << sumNum << endl; cout << "vecs为:" << sunStr << endl; } int main(){ test01(); system("pause"); return 0; }

     此时可以得到计算结果为:1000+0+1+...+100=6050

    Processed: 0.008, SQL: 8