Using Lambdas in C++: Listing 4
Printing odd elements from Listing 3, using lambda expressions.
int main()
{
// a list of 20 integers
list<int> l(20);
// here's the lambda version of GenerateFibonacci::operator()() in Listing 3.
// I replaced private variables penultimate_ and last_ with static ones, so they maintain
// values between consecutive invocations.
generate(begin(l), end(l), [] () {
static int penultimate(0), last(1);
int current = penultimate + last;
penultimate = last;
return last = current;
});
// likewise, we do the same with Listing 3 function printIfOdd(int).
for_each(begin(l), end(l), [] (int n) {
if (n%2)
cout << n << " is odd." << endl;
});
return 0;
}
About the Author
Diego Dagum is a software architect and developer with more than 20 years of experience. He can be reached at [email protected].