Durch die Erfolge mit dem Einsatz der Iteratoren gestärkt, versuchen wir nun das Ganze 'mal mit for_each(). Dazu lesen wir beispielsweise in der sgi-Dokumentation nach und finden:
Aber was, bitteschön, ist eine UnaryFunction?
Eine Stunde später sind wir schlauer und wissen inzwischen:
Es handelt sich um eine Funktion, die ein Argument (einen Parameter) importiert.
Versuchen wir's also einfach 'mal.
|
An die beiden Iteratoren first und last übergeben wir einfach den Anfangsiterator und den Endeiterator des Vektors. Wie können wir aber an for_each() als dritten Parameter eine Funktion übergeben? |
Nachdem eine halbe Stunde Herumstochern und "idiotische Compiler-Fehlermeldungen" uns nicht weitergebracht haben, besinnen wir uns auf das, was der Eichelsdörfer uns immer 'mal wieder "um die Ohren haut". Wir lesen und verwenden Papier, Bleistift und Radiergummi, statt nur auf der Tastatur herumzuhacken.
Nach zwei Tagen sind wir schlauer:
Was wir als dritten Parameter an for_each() übergeben müssen, ist ein Funktionsobjekt - whow!
Dazu finden wir in dem Buch von Kuhlins und Schader "Die C++ Standardbibliothek",
2. Auflage, Springer-Verlag:
Versuchen wir es zuerst mit einem Zeiger auf eine Funktion. Die einfachste Implementation verwendet einen Funktionsnamen als dritten Parameter.
|
Der dritte Parameter im Aufruf von for_each() ist showInt. Dieser Parameter ist die Anfangsadresse der Funktion showInt, also ein Zeiger auf showInt. So funzt es, bleibt aber unbefriedigend. |
Immerhin hat es der Compiler "gefressen". Zu mehr sind wir jetzt auch nicht mehr im Stande.
Neuer Tag, neue Kraft, neues Glück.
... zur Fortsetzung