January 2018
Intermediate to advanced
374 pages
9h 53m
English
In a nutshell, the lambda function capability enables programmers to pass functions to regular functions, just as easily as a variable is passed.
Let's compare passing a lambda function to an algorithm with passing a variable:
// Prerequisite
auto vals = std::vector<int>{1, 3, 2, 5, 4};
// Look for number three
auto three = 3;
auto num_threes = std::count(vals.begin(), vals.end(), three);
// num_threes is 1
// Look for a numbers which is larger than three
auto is_above_3 = [](int v){ return v > 3; };
auto num_above_3 = std::count_if(vals.begin(), vals.end(), is_above_3);
// num_above_3 is 2
Notice how we pass a variable to search for with std::count() in the first case, and a function to search for with ...