この質問に対する最初の回答によると、以下のファンクターはに渡された後も値を保持できるはずですforeach
(例ではコンパイルできなかったためstruct Accumulator
、クラスを作成しました)。
class Accumulator
{
public:
Accumulator(): counter(0){}
int counter;
void operator()(const Card & c) { counter += i; }
};
使用例(例に従って)
// Using a functor
Accumulator acc;
std::for_each(_cards.begin(), _cards.end(), acc);
// according to the example - acc.counter contains the sum of all
// elements of the deque
std::cout << acc.counter << std::endl;
_cards
として実装されますstd::deque<Card>
。どれだけ長く_cards
てacc.counter
も、完了後はゼロになりfor_each
ます。デバッガーをステップスルーすると、カウンターの増分が表示acc
されますが、値が渡されることと関係がありますか?