Реализация общей функции 'map' над массивами в C

У меня возникли трудности с реализацией общей функции 'map' над массивами. Я начал со следующего черновика:

void MapArray(void * src, void * dest, void * (f)(void *), size_t n, size_t elem)
{
   unsigned int i = 0, j = 0;
   void * temp = malloc(elem);

   for(i = 0; i<n, i++)
   {
      temp = (f)((char *) src) + i));
      for(j = 0; j < elem; j++)
      {
         *(((char *) dest) + i) = *(((char *) temp) + i);
      }
   }
   free(temp);
}

Я понимаю, почему это неправильно - я преобразую его в (char *), прежде чем присвоить ему 'f', но теперь я демотивирован и не могу придумать решение. (Я делаю это в процессе изучения C)

Моим разумом было получить результат 'f' и побайтно скопировать его в dest [i].

Вы можете мне что-нибудь подсказать?

10
задан Lasirc 28 October 2010 в 21:48
поделиться