for_each() die Zweite

Beginnen wir mit einer Implementation, wie wir sie ohne Kenntnis von Iteratoren und for_each() codieren.

1. Implementation ohne Iteratoren und ohne for_each()


template <typename T>
void showVectorContent(const vector<T>& v)
{
 for (unsigned int i=0; i<v.size(); ++i)
  cout << v[i] << " ";
 cout << endl;
}

Es wird ein Vektor mit dem Elementtyp T per Referenz importiert.

In der Schleife läuft ein Index i von 0 bis zum letzten gültigen Wert (v.size()-1).

Mit Hilfe des Index greifen wir auf das entsprechende Vektorelement zu und lassen es ausgeben.


Zeigen wir nun, dass wir etwas von Iteratoren verstehen!
An for_each() trauen wir uns aber noch nicht heran.

2. Implementation mit Iteratoren und ohne for_each()


template <typename T>
void showVectorContent(const vector<T>& v)
{
 for (vector<T>::const_iterator iter=v.begin();
      iter!=v.end(); ++iter)
  cout << *iter << " ";
 cout << endl;
}

In der Schleife läuft ein Vektor-Iterator iter vom Vektor-Anfang bis zum letzten gültigen Wert vor Vektor-Ende.

Mit dem dereferenzierten Iterator lassen wir das entsprechende Vektorelement ausgeben.

Nachdem das geklappt hat, werden wir mutig und trauen uns endlich an die Implementation mit for_each() heran.