How to apply a callback to an array (apply a function to each element) in C++

3 Answers

0 votes
// Callback using a function pointer (classic C‑style)

#include <iostream>

// Callback function type: takes an int, returns void
void myCallback(int x) {
    std::cout << "Callback called with: " << x << std::endl;
}

// Function that accepts a callback
void applyToArray(int arr[], int size, void (*callback)(int)) {
    for (int i = 0; i < size; i++) {
        callback(arr[i]);
    }
}

int main() {
    int arr[] = { 5, 10, 15, 20 };
    int size = sizeof(arr) / sizeof(arr[0]);

    applyToArray(arr, size, myCallback);
}



/*
run:

Callback called with: 5
Callback called with: 10
Callback called with: 15
Callback called with: 20

*/

 



answered Mar 20 by avibootz
0 votes
// Callback using std::function (modern C++)

// Works with lambdas, functors, and function pointers.

#include <iostream>
#include <functional>

void applyToArray(int arr[], int size, std::function<void(int)> callback) {
    for (int i = 0; i < size; i++) {
        callback(arr[i]);
    }
}

int main() {
    int arr[] = { 5, 10, 15, 20 };
    int size = sizeof(arr) / sizeof(arr[0]);

    // Lambda callback
    applyToArray(arr, size, [](int x) {
        std::cout << x / 5 << std::endl;
    });
}



/*
run:

1
2
3
4

*/

 



answered Mar 20 by avibootz
0 votes
// Callback using a functor (object with operator())

#include <iostream>

struct Divider {
    int d;
    Divider(int d) : d(d) {}

    void operator()(int x) const {
        std::cout << x / d << std::endl;
    }
};

void applyToArray(int arr[], int size, Divider callback) {
    for (int i = 0; i < size; i++) {
        callback(arr[i]);
    }
}

int main() {
    int arr[] = { 5, 10, 15, 20 };
    int size = sizeof(arr) / sizeof(arr[0]);

    applyToArray(arr, size, Divider(5));
}



/*
run:

1
2
3
4

*/

 



answered Mar 20 by avibootz
...