小编Hyu*_*Tae的帖子

for_each中的C++ functor意外行为

请考虑以下示例:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class accum
{
public:
    int sum;
    accum()
    {
        sum = 0;
    }
    void operator() (int a)
    {
        sum += a;
        printf("sum=%d\n",sum);
    }
};

int main()
{
     int ari[] = {2,8,5,9,1};
     vector<int> vi(&ari[0], &ari[5]);
     accum f;
     for_each(vi.begin(), vi.end(), f);
     printf("final sum : %d\n", f.sum);
}
Run Code Online (Sandbox Code Playgroud)

我期望总和25,但它打印0.为什么f保持不变?有人能详细介绍一下发生了什么吗?

c++ stl functor

4
推荐指数
1
解决办法
70
查看次数

标签 统计

c++ ×1

functor ×1

stl ×1