šHgeocities.com/Vienna/Stage/4793/stl6.htmgeocities.com/Vienna/Stage/4793/stl6.htmdelayedxć¸ÕJ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ČpĖ£"OKtext/html€Cmo"˙˙˙˙b‰.HMon, 18 Dec 2000 15:44:58 GMTMozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)en, *ć¸ÕJ" Iteratoren

Zurück ] Nach oben ] Weiter ]

 

Iteratoren

Ein Iterator ist eine reine Abstraktion eines Zeigers auf ein Element in einer Sequenz. Die fundamentalen Konzepte sind:

  • "das Element liefern, auf das gerade gezeigt wird" (->)

  • "auf das nächste Element zeigen" (++)

  • "auf Gleichheit testen" (==)

 Eine Sequenz ist eine Abstraktion von "etwas, das man mit der Operation nächstes-Element von Anfang bis Ende durchlaufen kann".

Jeder Zeiger kann ein Iterator sein. Er wird dadurch zum Iterator, dass er immer elementbezogen und sequenzbezogen betrachtet wird. Deswegen gibt es keinen NULL-Iterator. Er kann entweder den Zustand gültig oder ungültig haben. Dieser Zustand wird ermittelt, indem er mit dem Ende der Sequenz statt mit Null verglichen wird. Ein Iterator kann ungültig sein, weil er nicht initialisiert wurde, weil er in einen Container zeigt, dessen Größe sich explizit oder implizit verändert hat, weil der Container zerstört wurde oder weil er am Ende einer Sequenz steht. Das Ende einer Sequenz ist ein hypothetisches Element, dass sich eine Position hinter dem letzten Element befindet.


Die Iteratoren sind in Kategorien eingeteilt, die eine hierarchische Ordnung bilden.

In <iterator> werden einige Templateklassen zur Verfügung gestellt, die bei der Erstellung von neuen Iteratoren für neue Container hilfreich sind. In der Regel nutzt man aber die in den Standardconatinern definierten Iteratoren: 

#pragma warning(disable:4786) // Schaltet die Warnung,daß 255 Zeichen überschritten wurden.
#include <iostream>
#include <vector>

using namespace std ;
typedef vector<int> INTVECTOR;

void gibaus( INTVECTOR theVector)
{
  INTVECTOR::iterator theIterator;
  cout << endl << "theVector [ " ;
  for (theIterator = theVector.begin(); theIterator != theVector.end();theIterator++)
  {
        cout << *theIterator;
  }
}