함수와 펑터를 비교할 때 함수에 대한 펑터의 장점은 펑터가 statefull이라는 점입니다.펑터 멤버의 상태 데이터와 글로벌 함수
그러나이 코드에서는 함수가 statefull이 될 수도 있습니다. 그래서 내가 뭘하고/잘못 이해하고 있니?
struct Accumulator
{
int counter = 0;
int operator()(int i)
{
counter += i;
return counter;
}
};
int Accumulate(int i)
{
static int counter = 0;
counter += i;
return counter;
};
int main()
{
Accumulator acc;
std::vector<int> vec{1,2,3,4};
Accumulator acc2 = std::for_each(vec.begin(), vec.end(), acc);
int d1 = acc(0); // 0, acc is passed by value
int d2 = acc2(0); // 10
std::for_each(vec.begin(), vec.end(), Accumulate);
int d4 = Accumulate(0); // 10
return 0;
}
어떻게 시작 하시겠습니까? – chris
@ 크리스 : 제발 당신 reformulation 수 있습니까? – Korchkidu
상태에 '정적'을 사용하는 함수로 상태는 모든/모든 사용 및 호출에서 공유됩니다. 사용법에 따라 "재설정"기능이 필요할 수 있습니다. Functor의 경우 많은 것을 독립적으로 만들 수 있습니다. – crashmstr