Implementing the higher-order functions map and fold
Throughout the preceding recipes in this book, we have used the general-purpose algorithms
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,
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
fold functions so that they work with C++ standard containers.
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...