Iterator

In der Computerprogrammierung ist ein iterator ein Gegenstand, der einem Programmierer ermöglicht, einen Behälter zu überqueren. Verschiedene Typen von iterators werden häufig über eine Schnittstelle eines Behälters zur Verfügung gestellt. Obwohl die Schnittstelle und Semantik eines gegebenen iterator befestigt werden, werden iterators häufig in Bezug auf die Strukturen durchgeführt, die einer Behälterdurchführung unterliegen, und werden häufig mit dem Behälter dicht verbunden, um die betriebliche Semantik des iterator zu ermöglichen. Bemerken Sie, dass ein iterator Traversal durchführt und auch Zugang zu Datenelementen in einem Behälter gibt, aber Wiederholung nicht durchführt (d. h., nicht ohne etwas bedeutende Freiheit, die mit diesem Konzept oder mit dem trivialen Gebrauch der Fachsprache genommen ist). Ein iterator ist einem Datenbankcursor Verhaltens-ähnlich.

Beschreibung

Äußerlicher iterators und das iterator Muster

Von einem äußerlichen iterator kann als ein Typ des Zeigestocks gedacht werden, der zwei primäre Operationen hat: In einem besonderem Element in der Gegenstand-Sammlung (genannt Element-Zugang), und das Ändern von sich so Verweise anzubringen, weist es zum folgenden Element (genannt Element-Traversal) hin. Es muss auch eine Weise geben, einen iterator zu schaffen, so weist es zu einem ersten Element sowie einer Weise hin zu bestimmen, als der iterator alle Elemente im Behälter erschöpft hat. Abhängig von der Sprache und dem beabsichtigten Gebrauch kann iterators auch zusätzliche Operationen zur Verfügung stellen oder verschiedene Handlungsweisen ausstellen.

Der primäre Zweck eines iterator ist, einem Benutzer zu erlauben, jedes Element eines Behälters zu bearbeiten, während er den Benutzer von der inneren Struktur des Behälters isoliert. Das erlaubt dem Behälter, Elemente auf jede Weise zu versorgen, die er wünscht, während er dem Benutzer erlaubt, es zu behandeln, als ob es eine einfache Folge oder Liste war. Eine iterator Klasse wird gewöhnlich in der dichten Koordination mit der entsprechenden Behälterklasse entworfen. Gewöhnlich stellt der Behälter die Methoden zur Verfügung, um iterators zu schaffen.

Bemerken Sie, dass ein Schleife-Schalter manchmal auch eine Schleife iterator genannt wird. Ein Schleife-Schalter stellt jedoch nur die überquerende Funktionalität und nicht die Element-Zugriffsfunktionalität zur Verfügung.

Generatoren

Eine Weise, iterators durchzuführen, soll eine spezielle Art des Unterprogramms verwenden, das als ein Generator bekannt ist, der Werte seinem Anrufer mehrmals nachgeben kann (anstatt gerade einmal zurückzukehren). Die meisten iterators sind natürlich expressible als Generatoren, aber weil Generatoren ihren lokalen Staat zwischen Beschwörungen bewahren, sind sie für den komplizierten, stateful iterators, wie Baum traversers besonders gut passend. Ein Beispiel eines Generators, die Fibonacci-Zahlen mit der Behauptung der Pythonschlange zurückgebend, kann unten gesehen werden.

def fibonacci :

a, b = 0, 1

während Wahr:

geben Sie einen nach

a, b = b, a+b

für die Zahl in fibonacci : # Gebrauch der Generator als ein iterator

Druckzahl

</Quelle>

Impliziter iterators

Einige objektorientierte Sprachen wie Perl, Pythonschlange, Lua, C#, Rubinrote und spätere Versionen Javas und Delphi stellen eine innere Weise zur Verfügung, durch die Elemente eines Behältergegenstands ohne die Einführung eines ausführlichen Iterator-Gegenstands zu wiederholen. Ein wirklicher Iterator-Gegenstand kann in Wirklichkeit bestehen, aber wenn er tut, wird er innerhalb des Quellcodes der Sprache nicht ausgestellt.

Implizite iterators werden häufig durch eine "foreach" Behauptung (oder gleichwertig), solcher als im folgenden Pythonschlange-Beispiel manifestiert:

für den Wert in iterable:

drucken Sie schätzen

</Quelle>

Oder andere Zeiten können sie durch den Sammlungsgegenstand selbst, als in diesem Beispiel von Ruby geschaffen werden:

iterable.each tun |value|

legt Wert

Ende

</Quelle>

Dieser Wiederholungsstil wird manchmal "innere Wiederholung" genannt, weil sein Code völlig innerhalb des Zusammenhangs des Iterable-Gegenstands durchführt (der alle Aspekte der Wiederholung kontrolliert), und der Programmierer nur die Operation zur Verfügung stellt, um an jedem Schritt durchzuführen (eine anonyme Funktion verwendend).

Sprachen, die Listenverständnisse oder ähnliche Konstruktionen unterstützen, können auch von implizitem iterators während des Aufbaus der Ergebnis-Liste, als in der Pythonschlange Gebrauch machen:

Namen = [person.name für die Person im Arbeitsschema wenn person.male]

</Quelle>

Manchmal ist die implizite verborgene Natur nur teilweise. Der C ++ hat Sprache einige Funktionsschablonen, solcher als, der ähnliche implizite Wiederholung berücksichtigt. Jedoch verlangen sie noch ausführliche Iterator-Gegenstände als ihr anfänglicher Eingang. Aber einmal initialisiert geschieht die nachfolgende Wiederholung implizit ohne den fortlaufenden Gebrauch von irgendwelchem hat Iterator-Gegenstand ausgestellt.

Das Kontrastieren mit dem Indexieren

Auf Verfahrenssprachen ist es üblich, den Subschrift-Maschinenbediener und einen Schleife-Schalter zu verwenden, um sich durch alle Elemente in einer Folge wie eine Reihe zu schlingen. Obwohl das Indexieren auch mit einigen objektorientierten Behältern verwendet werden kann, kann der Gebrauch von iterators im Vorteil sein:

  • Zählen-Schleifen sind zu allen Datenstrukturen, insbesondere zu Datenstrukturen ohne nicht passend oder verlangsamen zufälligen Zugang, wie Listen oder Bäume.
  • Iterators kann eine konsequente Weise zur Verfügung stellen, auf Datenstrukturen aller Arten zu wiederholen, und deshalb den Code lesbarer, wiederverwendbar, und weniger empfindlich zu einer Änderung in der Datenstruktur zu machen.
  • Ein iterator kann zusätzliche Beschränkungen des Zugangs wie das Sicherstellen geltend machen, dass Elemente nicht ausgelassen werden können, oder dass auf ein vorher besuchtes Element ein zweites Mal nicht zugegriffen werden kann.
  • Ein iterator kann dem Behältergegenstand erlauben, modifiziert zu werden, ohne den iterator ungültig zu machen. Zum Beispiel, sobald ein iterator außer dem ersten Element vorwärts gegangen ist, kann es möglich sein, zusätzliche Elemente in den Anfang des Behälters mit voraussagbaren Ergebnissen einzufügen. Mit dem Indexieren ist davon problematisch, da sich die Postleitzahlen ändern müssen.

Die Fähigkeit eines zu modifizierenden Behälters, während das Wiederholen durch seine Elemente notwendig in der modernen objektorientierten Programmierung geworden ist, wo die Wechselbeziehungen zwischen Gegenständen und den Effekten von Operationen nicht offensichtlich sein können. Indem er einen iterator verwendet, wird einer von diesen Sorten von Folgen isoliert.

Auf verschiedenen Programmiersprachen

C ++

Der C ++ macht Sprache breiten Gebrauch von iterators in seiner Standardschablone-Bibliothek, die mehrere verschiedene Arten von iterators, einschließlich fortgeschrittenen iterators, bidirektionalen iterators und zufälligen Zugangs iterators zur Verfügung stellt. Alle Standardbehälterschablone-Typen stellen eine reiche und konsistente Menge von iterator Typen zur Verfügung. Die Syntax des Standards iterators wird entworfen, um dieser der gewöhnlichen C Zeigestock-Arithmetik zu ähneln, wo und Maschinenbediener verwendet werden, um im Element Verweise anzubringen, zu dem der iterator hinweist, und Zeigestock-Arithmetik-Maschinenbediener mögen, werden verwendet, um den iterator zum folgenden Element vorzubringen.

Iterators werden gewöhnlich in Paaren verwendet, wo einer für die wirkliche Wiederholung und die zweiten Aufschläge verwendet wird, um das Ende der Sammlung zu kennzeichnen. Die iterators werden durch die entsprechende Behälterklasse mit Standardmethoden solcher als geschaffen und. Der iterator, der durch Punkte ins erste Element zurückgegeben ist, während der iterator, der dadurch zurückgegeben ist, ein spezieller Wert ist, der in keinem Element Verweise anbringt. Wenn ein iterator außer dem letzten Element vorgebracht wird, ist es definitionsgemäß dem speziellen Ende iterator Wert gleich.

Das folgende Beispiel zeigt einen typischen Gebrauch eines iterator.

std:: Vektor

Sachen push_back (1);//Hängen Wert der ganzen Zahl '1' am Vektoren 'Sachen' An

Sachen push_back (2);//Hängen Wert der ganzen Zahl '2' am Vektoren 'Sachen' An

Sachen push_back (3);//Hängen Wert der ganzen Zahl '3' am Vektoren 'Sachen' An

für (std:: Vektor

std:: cout

Es gibt viele Varianten von iterators jeder mit dem ein bisschen verschiedenen Verhalten, einschließlich: Schicken Sie nach, kehren Sie und bidirektionaler iterators um; zufälliger Zugang iterators; Eingang und Produktion iterators; und const iterators (die den Behälter oder seine Elemente von der Modifizierung schützen).

Jedoch unterstützt nicht jeder Typ des Behälters jeden Typ von iterator.

Es ist für Benutzer möglich, ihre eigenen iterator Typen durch das Abstammen von Unterklassen von der Standardklassenschablone zu schaffen.

Sicherheit von Iterator wird getrennt für die verschiedenen Typen von Standardbehältern definiert, in einigen Fällen ist der iterator im Erlauben den Behälter sehr permissiv sich zu ändern, während er wiederholt.

Implizite Wiederholung wird auch durch C ++ durch den Gebrauch von Standardfunktionsschablonen, solcher als, teilweise unterstützt

und.

Wenn verwendet, müssen sie mit vorhandenem iterators gewöhnlich initialisiert werden und, die die Reihe definieren, über die Wiederholung vorkommt. Aber kein ausführlicher Iterator-Gegenstand wird nachher ausgestellt, als die Wiederholung weitergeht. Dieses Beispiel zeigt den Gebrauch dessen.

ContainerType

leerer ProcessItem (const ItemType& I) {//Funktion, die jeden Artikel der Sammlung bearbeiten wird

std:: cout

Dasselbe kann mit erreicht werden und:

std:: Kopie (C.begin , C.end , std:: ostream_iterator

</Quelle>

Eine Beschränkung ist, dass diese Technik dem Körper für - jede Schleife nicht erlaubt, Reihen-erklärt zu werden, verlangend, dass ein Funktionszeigestock oder Funktion protestieren, um anderswohin erklärt und als ein Argument passiert zu werden. Das kann für durch das Verwenden einer Bibliothek wie Zunahme und das Verwenden des Lambdas teilweise ersetzt werden, um Funktionsgegenstände mit der vertrauten Infix-Maschinenbediener-Syntax implizit zu erzeugen. Jedoch, weil Zunahme am Bibliotheksniveau, aber nicht wirklich auf der Sprache durchgeführt wird, müssen bestimmte Operationen über workarounds getan werden.

Der aktuelle Standard von C ++, C ++ 11, unterstützt heimisch Lambda-Funktionssyntax, dem Funktionsschablone-Körper erlaubend, Reihen-erklärt zu werden.

Hier ist ein Beispiel für - jede Wiederholung mit einer Lambda-Funktion:

ContainerType

//Für - jede Wiederholungsschleife mit einem Lambda fungieren

std:: for_each (C.begin , C.end , [] (const ItemType& I) {std:: cout

C# und andere.NET Sprachen

Iterators im.NET Fachwerk werden "Zähler" genannt und durch die Schnittstelle vertreten. stellt eine Methode zur Verfügung, die zum folgenden Element vorwärts geht und anzeigt, ob das Ende der Sammlung erreicht worden ist; ein Eigentum, um den Wert des Elements zu erhalten, das zurzeit daran wird anspitzt; und eine fakultative Methode, um den Zähler zurück zu seiner anfänglichen Position zurückzuspulen. Der Zähler weist am Anfang zu einem speziellen Wert vor dem ersten Element hin, so ist ein Anruf erforderlich zu beginnen zu wiederholen.

Zähler werden normalerweise durch das Benennen der Methode eines Gegenstands erhalten, der die Schnittstelle durchführt. Behälterklassen führen normalerweise diese Schnittstelle durch. Jedoch kann die foreach Behauptung in C# auf jedem Gegenstand funktionieren, der solch eine Methode zur Verfügung stellt, selbst wenn es nicht durchführt. Beide Schnittstellen wurden in allgemeine Versionen in.NET 2.0 ausgebreitet.

Die folgenden Shows ein einfacher Gebrauch von iterators in C# 2.0:

//ausführliche Version

IEnumerator

während (iter. MoveNext )

Konsole. WriteLine (iter. Strom);

//implizite Version

foreach (schätzen MyType in der Liste)

Konsole. WriteLine (Wert);

</Quelle>

C# 2.0 auch Unterstützungsgeneratoren: Eine Methode, die als das Zurückbringen erklärt wird (oder), aber die "" Behauptung verwendet, um eine Folge von Elementen zu erzeugen, anstatt ein Gegenstand-Beispiel zurückzugeben, wird durch den Bearbeiter in eine neue Klasse umgestaltet, die die passende Schnittstelle durchführt.

Java

Eingeführt in Java JDK 1.2 Ausgabe erlaubt die Schnittstelle die Wiederholung von Behälterklassen. Jeder stellt a und Methode zur Verfügung, und kann eine Methode fakultativ unterstützen. Iterators werden durch die entsprechende Behälterklasse normalerweise durch eine genannte Methode geschaffen.

Die Methode bringt den iterator vor und kehrt zurück der Wert hat zu durch den iterator hingewiesen. Das erste Element wird nach dem ersten Anruf erhalten. Um zu bestimmen, als alle Elemente im Behälter besucht worden sind, wird die Testmethode verwendet. Das folgende Beispiel zeigt einen einfachen Gebrauch von iterators:

Iterator iter = list.iterator ;

//Iterator

während (iter.hasNext ) {\

System.out.print (iter.next );

wenn (iter.hasNext )

System.out.print (", ");

}\</Quelle>

Um sich zu zeigen, kann das wiederholt genannt werden, wir verwenden es, um Kommas zwischen den Elementen, aber nicht nach dem letzten Element einzufügen.

Für Sammlungstypen, die es unterstützen, entfernt die Methode des iterator das am meisten kürzlich besuchte Element vom Behälter, während sie das iterator verwendbare behält. Das Hinzufügen oder das Entfernen von Elementen durch das Benennen der Methoden des Behälters (auch von demselben Faden) machen das iterator unbrauchbare. Ein Versuch, das folgende Element zu bekommen, wirft die Ausnahme. Eine Ausnahme wird auch geworfen, wenn es keine Elemente mehr restlich gibt (ist vorher falsch zurückgekehrt).

Zusätzlich, weil es mit einer ähnlichen API gibt, aber das erlaubt fortgeschrittene und rückwärts gerichtete Wiederholung, stellt seinen aktuellen Index in der Liste zur Verfügung und erlaubt, vom Listenelement an seiner Position unterzugehen.

Der J2SE 5.0 Ausgabe Javas hat die Schnittstelle eingeführt, um eine erhöhte (foreach) Schleife zu unterstützen, um über Sammlungen und Reihe zu wiederholen. definiert die Methode, die zurückkehrt. Mit der erhöhten Schleife kann das vorhergehende Beispiel als umgeschrieben werden

für (MyType obj: Liste) {\

System.out.print (obj);

}\</Quelle>

Einige Behälter verwenden auch das ältere (seit 1.0) Klasse. Es stellt zur Verfügung und Methoden, aber hat keine Methoden, den Behälter zu modifizieren.

Rubin

Ruby führt iterators ganz verschieden durch; alle Wiederholungen werden mittels vorübergehender Rückrufaktionsverschlüsse zu Behältermethoden - diese Weise getan, wie Ruby nicht nur grundlegende Wiederholung sondern auch mehrere Muster der Wiederholung wie Funktion kartografisch darstellend, Filter und das Reduzieren durchführt. Ruby unterstützt auch eine alternative Syntax für die grundlegende Wiederholen-Methode, die folgenden drei Beispiele sind gleichwertig:

(0... 42).each tun |n|

stellt n

Ende</Quelle>

... und...

für n in 0... 42

stellt nEnde</Quelle>

oder noch kürzer

42.times tun |n|

stellt nEnde</Quelle>

Rubin kann auch über feste Listen durch das Verwenden von Zählern und entweder das Benennen von ihrem #next Methode oder das Tun für jeden auf ihnen als oben wiederholen.

Pythonschlange

Iterators in der Pythonschlange sind ein grundsätzlicher Teil der Sprache, und in vielen Fällen gehen ungesehen, weil sie in der (foreach) Behauptung, in Listenverständnissen, und in Generator-Ausdrücken implizit verwendet werden. Alle eingebauten Standardsammlungstypen der Pythonschlange unterstützen Wiederholung, sowie viele Klassen, die ein Teil der Standardbibliothek sind. Das folgende Beispiel zeigt typische implizite Wiederholung über eine Folge:

für den Wert in der Folge:

Druck (Wert)

</Quelle>

Pythonschlange-Wörterbücher (eine Form der assoziativen Reihe) können auch direkt wiederholt werden, wenn die Wörterbuch-Schlüssel zurückgegeben werden; oder die Sache-Methode eines Wörterbuches kann wiederholt werden, wo sie entsprechenden Schlüssel, Wertpaare als ein Tupel nachgibt:

für den Schlüssel im Wörterbuch:

schätzen Sie = Wörterbuch [Schlüssel]

Druck (Schlüssel, Wert)

</Quelle>

für den Schlüssel, Wert in dictionary.items :

Druck (Schlüssel, Wert)</Quelle>

Iterators kann jedoch verwendet und ausführlich definiert werden. Für jeden iterable Folge-Typ oder Klasse wird die eingebaute Funktion verwendet, um einen Iterator-Gegenstand zu schaffen. Der Iterator-Gegenstand kann dann mit der Funktion wiederholt werden, die die Methode innerlich verwendet, die das folgende Element im Behälter zurückgibt. (Die vorherige Behauptung gilt für die Pythonschlange 3.x. In der Pythonschlange 2.x ist die Methode gleichwertig.) Wird eine Ausnahme erhoben, wenn keine Elemente mehr verlassen werden. Das folgende Beispiel zeigt eine gleichwertige Wiederholung über eine Folge mit ausführlichem iterators:

es = iter (Folge)

während Wahr:

Versuch:

schätzen Sie = it.next # in der Pythonschlange 2.x

schätzen Sie = als nächstes (es) # in der Pythonschlange 3.x

außer StopIteration:

Brechung

Druck (Wert)

</Quelle>

Jede benutzerbestimmte Klasse kann Standardwiederholung (entweder implizit oder ausführlich) durch das Definieren einer Methode unterstützen, die einen Iterator-Gegenstand schafft. Der Iterator-Gegenstand muss dann eine Methode definieren, die das folgende Element zurückgibt.

Die Generatoren der Pythonschlange führen dieses Wiederholungsprotokoll durch.

PHP

PHP 4 hat eine Foreach-Konstruktion, viel wie Perl und einige andere Sprachen eingeführt. Das gibt einfach einen leichten weg, um über die Reihe zu wiederholen. Foreach-Arbeiten nur an der Reihe in PHP 4, und werden einen Fehler ausgeben, wenn Sie versuchen, ihn auf einer Variable mit einem verschiedenen Datentyp oder einer uninitialisierten Variable zu verwenden.

In PHP 5 wird foreach auf dem Gegenstand-Wiederholen durch alle öffentlichen Mitglieder erlaubt.

Es gibt zwei Syntaxen; das zweite ist eine geringe, aber nützliche Erweiterung des ersten.

Beispiel ein

foreach (array_expression als $value) {\

Echo "$value\n";

}\

</Quelle>

Beispiel B

foreach (array_expression als $key => $value) {\

werfen Sie" ($key) $value\n zurück";

}\ </Quelle>

Das Beispiel Schleifen über die durch array_expression gegebene Reihe. Auf jeder Schleife wird der Wert des aktuellen Elements dem zugeteilt, und der innere Reihe-Zeigestock wird durch einen vorgebracht (so auf der folgenden Schleife, Sie werden auf das folgende Element schauen).

Das Beispiel B hat dieselbe Funktionalität wie oben. Zusätzlich wird der Schlüssel des aktuellen Elements (in diesem Fall, array_expression) der Variable auf jeder Schleife zugeteilt.

Die Iterator-Schnittstelle wird in PHP 5 vorherbestimmt, und Gegenstände können kundengerecht angefertigt werden, um Wiederholung zu behandeln.

Klasse MyIterator führt Iterator {\durch

privater $var = Reihe ;

öffentliche Funktion __ Konstruktion ($array) {\

wenn (is_array ($array)) {\

$this-> var = $array;

}\

}\

öffentliche Funktionszurückspulung {\

Echo "rewinding\n";

Rücksetzen ($this-> var);

}\

öffentlicher Funktionsstrom {\

$var = Strom ($this-> var);

Echo "Strom: $var\n";

geben Sie $var zurück;

}\

öffentlicher Funktionsschlüssel {\

$var = Schlüssel ($this-> var);

Echo "Schlüssel: $var\n";

geben Sie $var zurück; }\

öffentliche Funktion als nächstes {\

$var = als nächstes ($this-> var);

hallen Sie "als nächstes: $var\n";

geben Sie $var zurück; }\

öffentliche Funktion gültig {\

$var = $this-> Strom ! == falsch;

hallen Sie "gültig: {$var }\\n";

geben Sie $var zurück; }\ }\

?>

</Quelle>

Diese Methoden werden alle in einem ganzen foreach ($obj ALS $key => $value) Folge verwendet.

Die Methoden von Iterators werden in der folgenden Ordnung durchgeführt:

1. Zurückspulung

2. während gültig {\

2.1 Strom im $value

2.3 Schlüssel im $key

2.4 als nächstes

}\

MATLAB

MATLAB unterstützt sowohl äußerliche als auch innere implizite Wiederholung mit entweder "der heimischen" Reihe oder Reihe. Im Fall von der Außenwiederholung, wo die Pflicht auf dem Benutzer ist, um das Traversal vorzubringen und um folgende Elemente zu bitten, kann man eine Reihe von Elementen innerhalb einer Reihe-Lagerungsstruktur definieren und die Elemente mit - Schleife-Konstruktion überqueren. Zum Beispiel,

% Definieren Sie eine Reihe von ganzen Zahlen

myArray = [1,3,5,7,11,13];

für n = myArray

%... tun Sie etwas mit n

disp (n) ganze %-Echo-Zahl, um Fenster Zu befehlen

Ende</Quelle>

überquert eine Reihe von ganzen Zahlen mit dem Schlüsselwort.

Im Fall von der inneren Wiederholung, wo der Benutzer eine Operation dem iterator liefern kann, um über jedes Element einer Sammlung zu leisten, werden viele eingebaute Maschinenbediener und MATLAB-Funktionen überladen, um über jedes Element einer Reihe durchzuführen und eine entsprechende Produktionsreihe implizit zurückzugeben. Außerdem, und Funktionen kann gestärkt werden, um kundenspezifische oder benutzerbestimmte Operationen über "die heimische" Reihe und Reihe beziehungsweise durchzuführen. Zum Beispiel,

fungieren Sie simpleFun

% Definieren Sie eine Reihe von ganzen ZahlenmyArray = [1,3,5,7,11,13];

% Führen Sie eine kundenspezifische Operation über jedes Element durch

myNewArray = arrayfun ((a) myCustomFun (a), myArray);

% Echo, das Reihe resultiert, um Fenster Zu befehlen

myNewArray

fungieren Sie outScalar = myCustomFun (inScalar)

% Multiplizieren Sie einfach um 2

outScalar = 2*inScalar;

</Quelle>

definiert eine primäre Funktion, die implizit kundenspezifische Subfunktion auf jedes Element einer Reihe mit der eingebauten Funktion anwendet.

Wechselweise kann es wünschenswert sein, die Mechanismen des Reihe-Lagerungsbehälters vom Benutzer durch das Definieren einer kundenspezifischen objektorientierten MATLAB Durchführung des Iterator Musters zu abstrahieren. Solch eine Durchführung, die Außenwiederholung unterstützt, wird im MATLAB Hauptdateiaustauschartikel-Designmuster demonstriert: (Verhaltens-) Iterator. Das wird in der neuen Klassendefinitionssyntax geschrieben, die mit der MATLAB Softwareversion 7.6 (R2008a) eingeführt ist

und zeigt eine eindimensionale Reihe-Verwirklichung der Liste Abstract Data Type (ADT) als der Mechanismus, für einen heterogenen (im Datentyp) Satz von Elementen zu versorgen. Es stellt die Funktionalität für das ausführliche Vorwärtslistentraversal mit, und Methoden für den Gebrauch in - Schleife zur Verfügung.

Siehe auch

Besuchermuster

Links


Illbient / Händigkeit
Impressum & Datenschutz