Dieses Funktionstemplate ist eines der Interessantesten. Es bietet die Möglichkeit, mit allen Elementen einer Kollektion etwas durchführen zu lassen. Um eine Instanz dieses Templates nutzen zu können, benötigen Sie jedoch noch zusätzliche Kenntnisse über Funktionsobjekte (Funktoren).

for_each() gehört zu den nichtmodifizierenden Algorithmen.
Das sind Algorithmen, die auf Container-Elemente nur lesend zugreifen, diese also nicht verändern.

Zum Kennenlernen von for_each() und dessen Erfordernissen soll das folgende Beispiel dienen.

Ausgabe aller Elemente eines Vektors

Statt eines Vektors können auch andere Container verwendet werden.

Mit dem folgenden Satz an Beschreibungsdateien kommen wir in diesem längeren Beispiel aus:

#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>

Im Mittelpunkt unserer Betrachtung soll das folgende Funktionstemplate stehen, das alle Elemente eines Vektors ausgeben soll.

template <typename T>
void showVectorContent(const vector<T>& v);

In der kleinen main-Funktion wird ein Vektor angelegt, mit 3 Werten gefüllt und die Funktion showVectorContent() für einen int-Vektor aufgerufen.

int main(int argc, char* argv[])
{
 vector<int> V1;
 V1.push_back(5);
 V1.push_back(9);
 V1.push_back(2);
 showVectorContent(V1);
 return 0;
}

Im weiteren Verlauf soll es darum gehen, das Funktionstemplate showVectorContent() zu implementieren.