阅读 32

stl算法与函数对象

  • std::accumulate()算法使用,第四参数是可选的
  • 函数对象的调用方式确实如预料,函数对象要好好用
#include <iostream>
#include <stdio.h>
#include <numeric>
#include <vector>
class Obj
{
public:
    int operator()(const int& x, const int& y) { std::cout << "operator() done" << std::endl; return x+y+(owner++); }
private:
    int owner{ 0 };
};

int main()
{
    std::vector<int> vec_int;
    for (int i = 0; i < 5; ++i)
    {
        vec_int.emplace_back(i);
    }
    Obj obj;
    int ret = std::accumulate(vec_int.begin(), vec_int.end(), 0, obj);
    printf("ret is %d \n", ret);  // ret = 20
}
复制代码
文章分类
后端
文章标签