How to use higher-order functions in C++

2 Answers

0 votes
#include <iostream>
#include <functional>

// A higher‑order function is a function that does at least one of the following:
// 1. Takes another function as an argument
// 2. Returns a function as its result
// If it does either one, it qualifies.

// Higher-order function: takes a function as an argument
int applyTwice(std::function<int(int)> fn, int x) {
    return fn(fn(x));
}

// A simple function to pass in
int add3(int n) {
    return n + 3;
}

int main() {
    // Use the higher-order function
    int result = applyTwice(add3, 5); // 5 + 3 = 8 + 3 = 11

    std::cout << result << std::endl;
}



/*
run:

11

*/

 



answered Jun 3 by avibootz
edited Jun 3 by avibootz
0 votes
#include <iostream>
#include <functional>

// A higher‑order function is a function that does at least one of the following:
// 1. Takes another function as an argument
// 2. Returns a function as its result
// If it does either one, it qualifies.

// makeMultiplier is a higher‑order function because it RETURNS another function
std::function<int(int)> makeMultiplier(int n) {

    // This inner function forms a closure and remembers the value of n
    return [n](int x) {
        return x * n; // Uses the captured value n
    };
}

int main() {
    // double is now a function created by makeMultiplier(2)
    // It remembers n = 2 through closure
    auto doubleFn = makeMultiplier(2);

    // Calling doubleFn(10) multiplies 10 by the captured n (which is 2)
    std::cout << doubleFn(10) << std::endl;
}



/*
run:

20

*/

 



answered Jun 3 by avibootz
...