Рассмотрим следующий пример:C++ функтор неожиданное поведение в for_each
#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);
}
Я ожидал, что сумма будет 25
, но он печатает 0
. Почему f
остались без изменений? Может ли кто-нибудь дать мне подробный отчет о том, что происходит?
Спасибо. Очень полезно. – HyunSangTae