Die Implementierung eines generical 'anzeigen' - Funktion über arrays in C

Ich habe Schwierigkeiten die Implementierung eines generischen " map " - Funktion über arrays.
Angefangen habe ich mit dem folgenden Entwurf:

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);
}

Verstehe ich, warum es nicht korrekt ist - ich bin-casting (char *), bevor er es auf 'f' - aber ich bin jetzt demotiviert und können nicht kommen mit einer Lösung. (Ich mache das in den Prozess des Lernens, C)

Meine Begründung war, erhalten Sie das Ergebnis von 'f' und, byte für byte, kopieren Sie es in dest[i].

Können Sie mir irgendeinen Hinweis?

für was benötigen Sie diesen Zeiger auf Funktion und was Karte, die Sie möchten, umzusetzen, ich glaube nicht, Sie wollen einige, zum Beispiel die Karte, die Behälter von der sgi?
Es ist die typische " map " - Anwendung finden Sie in nahezu jede funktionale Sprache, die es gibt. Sie senden eine Liste, eine Funktion und es gibt die Liste aus wie folgt: (f(l[1]), ..., f(l[n])).

InformationsquelleAutor Lasirc | 2010-10-28

Schreibe einen Kommentar