C言語マップ関数の使い方は?

C言語ではmap関数が元々存在しませんが、自分で定義した関数でmapの機能を利用できます。

配列を引数として受け取り、配列中の各要素に関数を実行する関数を定義し、その中でループを使用して配列を走査し、配列の各要素に呼び出した関数を適用するのが一般的な方法です。

単純なマップ関数をどのように実装するかを示す、例としてコードを示します。

#include <stdio.h>

void map(int arr[], int size, void (*func)(int)) {
    for (int i = 0; i < size; i++) {
        func(arr[i]);
    }
}

void square(int num) {
    printf("%d ", num * num);
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);

    map(arr, size, square);  // 对数组中的每个元素进行平方操作

    return 0;
}

上記コードでは、map関数は整数配列と関数ポインタをパラメータとして受け取ります。次に、map関数はループを使って配列内を反復し、渡された関数を入力された各要素に対して呼び出します。プログラム例では、square関数が配列内の各要素に対して2乗計算を行います。その結果が出力されます。

配列の各要素を2乗した結果の出力:1 4 9 16 25

上記サンプルは単純な実装例であり、実際にはより多くのエラーチェックやハンドリングが必要になる可能性がある点に注意してください。

bannerAds