Implementing the higher-order functions map and fold
Throughout the preceding recipes in this book, we have used the general-purpose algorithms std::transform()
and std::accumulate()
in several examples, such as for implementing string utilities to create uppercase or lowercase copies of a string or for summing the values of a range. These are basically implementations of higher-order functions, map
and fold
. A higher-order function is a function that takes one or more other functions as arguments and applies them to a range (a list, vector, map, tree, and so on), thus producing either a new range or a value. In this recipe, we will learn how to implement the map
and fold
functions so that they work with C++ standard containers.
Getting ready
Map is a higher-order function that applies a function to the elements of a range and returns a new range in the same order.
Fold is a higher-order function that applies a combining function to the elements of the range...