In C ++ kann der Vektor durch die Verwendung des klassischen For-Schleifens mit dem Index (Index) in den Quadratklammern geschoben werden. Es kann durch die nutzungsbasierte Forderung geschoben werden. Es kann durch die in der Algorithmus -Bibliothek enthaltene Funktion for_each () geschaltet werden.
Artikelinhalt
- Schleifen mit dem klassischen For-Loop
- Looping mithilfe der rangebasierten Forterung
- Looping mit der Funktion for_each ()
- Abschluss
Schleifen mit dem klassischen For-Loop
Index
Betrachten Sie das folgende Codesegment:
VektorDer Ausgang ist 'C'. In der zweiten Erklärung gibt es nach dem Vektornamen VTR die Quadratklammern. Innerhalb der Quadratklammern befindet sich der Index, der auch das Vektor -Index ist. Die Indexzählung beginnt von Null. Der Index im Code ist 2, was das dritte Element des Vektors zurückgibt.
Schleifen mit dem Index
Um mit dem Index oder Iterator zu schließen, muss die For-Schleife verwendet werden. Die während der Schleife oder der Schleife kann auch verwendet werden, aber die Fürs Schleife ist am bequemsten. Die Syntax eines For-Schleife ist:
für (fange_state; while_condition; next/vorher)Vorwärts schleifen
Das folgende Programm verwendet eine For-Schleife, um einen Vektor von Charakteren (CHARS) mit dem Index voranzutreiben:
#enthaltenDie Ausgabe ist:
A b c d eDie Vektorbibliothek muss aufgenommen werden, damit die Vektorklasse verwendet wird. In der C ++-Hauptfunktion ist nach der Erstellung des Vektors der For-Loop. Diese For-Schleife kann wie folgt zusammengefasst werden: Lesen Sie jedes Element des Vektors ab Index, 0; Und während das Ende des Vektors noch nicht erreicht ist, erhöhen Sie den Index um 1, um das nächste Element zu lesen.
Die Klammern der For-Schleife haben die Logik, was als nächstes lesen soll, während der Block des For-Loop die Lektüre und Drucken am Terminal (Konsole) erledigt.
Vorwärts schleifen und überspringen
In der obigen Schleife lautet die nächste Aussage in den Klammern i++. Dies ist das gleiche wie:
i = i + 1Damit werden die Elemente nacheinander in die Vorwärtsrichtung gelesen. Um jedes andere Element zu lesen (jedes Mal ein Element überspringen), muss das nächste Argument in den Klammern sein
i = i + 2; das ist das gleiche wie i+= 2;Der folgende Code liest jedes andere Charakter vor:
VektorDie Ausgabe ist:
A c eRückwärts schleifen
Der folgende Code verwendet eine For-Schleife, um rückwärts, einen Vektor von Charakteren (CHARS) zu schleifen:
int main ()Die Ausgabe ist:
E d c b aDie Schleife beginnt aus dem höchsten Index (4), der angegeben wird durch:
vtr.size ()-1In diesem Fall gibt die Vektorelementfunktion Size () 5 zurück 5. 1 muss davon abgezogen werden, um den höchsten Index von 4 zu erhalten (die Indexzählung beginnt von 0). Um rückwärts zu schleifen, ist die vorherige Aussage in den Klammern jetzt "i-".
Rückwärts schleifen und überspringen
In der obigen Schleife lautet die vorherige Aussage i-. Dies ist das gleiche wie:
i = i - 1Damit werden die Elemente nacheinander in umgekehrter Richtung gelesen. Um jedes andere Element zu lesen (jedes Mal ein Element überspringen), muss die vorherige Anweisung sein
i = i - 2; das ist das gleiche wie i- = 2;Der folgende Code liest alle anderen Zeichen rückwärts vor:
VektorDie Ausgabe ist:
E c aüberspringen 'D' und 'B'.
Looping mit einer Iteratorklasse
Ein Vektor kann mit einem Iterator geschoben werden. Es gibt sechs Vektor -Iteratorklassen. Hier werden nur zwei verwendet. Die Namen der beiden sind: Iterator und Reverse_iterator. In den Abbildungen hier wird der For-Schleife immer noch als Schleife verwendet.
Ein Iterator ist ein ausgefeilter Zeiger. Für jeden Iterator gibt es eine Klasse, aus der Objekte instanziiert werden können. Das instanziierte Objekt ist der Iterator.
Vorwärts schleifen
Das folgende Programm verwendet eine Verschlüsselung, um nach dem Iterator einen Vektor von Charakteren (CHARS) zu schleifen:
#enthaltenDie Ausgabe ist:
A b c d eBeobachten Sie, wie das Iteratorobjekt, Iter deklariert wurde. Der Vektor hat die Mitgliedsfunktion beginnt (). Dies gibt einen Iterator zurück, der auf das erste Element des Vektors verweist. Es gibt eine andere Mitgliedsfunktion, End () für den Vektor. Dies gibt einen Iterator zurück, der kurz nach dem letzten Element des Vektors zeigt. Der Iterator, der von Ende () zurückgegeben wurde, ist sehr kompatibel für den Iterator, der von begin () zurückgegeben wurde. Tatsächlich sind sie vom gleichen Typ Iterator.
In den Klammern ist der Anfangszustand:
iter = iter;Das bedeutet, dass der linke Operand, ITER, mit dem Scannen von dem rechten Operanden beginnen sollte, auf auf den Iter zeigt.
Diese Auszeit mit Iteratoren kann wie folgt zusammengefasst werden: Lesen Sie jedes Element des Vektors, der von dem von ITER angezeigt wird; Und während das Ende des Vektors noch nicht erreicht ist, erhöhen Sie den Iterator, Iter, um auf das nächste Element zu verweisen, um das nächste Element zu lesen.
Der Körper des For-Schleife ist:
char ch = *iter;Das Sternchen in dieser Position ist ein Indirektionoperator. Es erhält den Wert, auf den der Iterator vermittelt wird
Vorwärts schleifen und mit Iterator überspringen
In der obigen Schleife ist das nächste Argument Iter++. Dies ist das gleiche wie:
iter = iter + 1Plus-eins mit dem Iterator bedeutet auf das nächste Element hinweisen. Es bedeutet nicht, die Ganzzahl 1 zum Iterator hinzuzufügen. Damit werden die Elemente nacheinander in die Vorwärtsrichtung gelesen. Um jedes andere Element zu lesen (jedes Mal ein Element überspringen), muss das nächste Argument sein
iter = iter + 2; das ist das gleiche wie iter+= 2;Der folgende Code liest jedes andere Charakter vor:
VektorDie Ausgabe ist:
A c eüberspringen 'B' und 'D'.
Rückwärts schleifen
Der folgende Code verwendet eine für die Schleife nach hinten, einen Vektor von Charakteren (Zeichen) mit Iteratoren nach hinten:
int main ()Die Ausgabe ist:
E d c b aDer Reverse_iterator wurde hier verwendet. Der Vektor verfügt. Es gibt eine andere Mitgliedsfunktion, Rend (), die einen Iterator zurückgibt, der kurz vor dem ersten Element des Vektors zeigt.
Um rückwärts zu schleifen, ist die vorherige Aussage in den Klammern immer noch ironischerweise „Iter ++“. Und die während der Zeit, die immer noch ironischerweise hat '<'.
Rückwärts schleifen und überspringen
In der obigen Schleife lautet die vorherige Aussage ITER++. Dies ist dasselbe wie
iter = iter + 1Damit werden die Elemente nacheinander in umgekehrter Richtung gelesen. Um jedes Bestellelement zu lesen (jedes Mal ein Element überspringen), muss die vorherige Anweisung sein
iter = iter + 2; das ist das gleiche wie iter+= 2;Der folgende Code liest jeden anderen Charakter rückwärts vor:
VektorDie Ausgabe ist:
E c aüberspringen 'D' und 'B'.
Looping mithilfe der rangebasierten Forterung
Die auf sich auf den Bereich basierende For-Statement ist eine bequemere Aussage, um eine Liste wie einen Vektor zu durchlaufen. Es wird nicht wirklich zum Überspringen oder Schleifen nach hinten verwendet. Die Syntax ist:
für (init-statement-optionale For-Range-Deklaration: For-Range-Initializer) ErklärungDiesmal gibt es zwei Aussagen in den Klammern und nicht drei. Die erste Aussage ist die Erklärung einer Variablen, die das nächste Element im Vektor enthält. Diese Variable muss den gleichen Typ wie die Art der Vektorelemente haben. Das zweite Argument nach dem Dickdarm ist der Name des Vektors.
Der folgende Code zeigt, wie er verwendet werden kann:
VektorDie Ausgabe ist:
A b c d eLooping mit der Funktion for_each ()
Die Funktion for_each () wird aus der enthaltenen Algorithmusbibliothek verwendet. Die Syntax ist:
VorlageDas erste Argument ist ein Iterator, der auf das erste Element des Vektors hinweist. Das zweite Argument ist ein Iterator, der kurz nach dem letzten Element des Vektors zeigt. Das dritte Argument ist der Name einer Funktion, deren Körper das ist, was im klassischen For-Loop wäre. Diese Funktion hat einen Parameter, und es ist die Deklaration der Variablen, die den nächsten Wert des Vektors enthält. Es muss vom gleichen Typ sein wie jedes Element im Vektor. Diese Funktion für die_each () wird nicht wirklich zum Überspringen oder Schleifen nach hinten verwendet.
Das folgende Programm zeigt, wie Sie den Funktionsaufruf for_each () und eine zugehörige Funktionsdefinition verwenden:
#enthaltenDie Ausgabe ist:
A b c d eAbschluss
Um durch einen Vektor zu schleifen, bedeutet dies, vom Anfang bis zum Ende oder vom Ende bis zum Anfang auf alle Elemente des Vektors zuzugreifen. Die Elemente können zum Lesen oder Schreiben (Wert ändern) oder beides zugegriffen werden.
In C ++ kann der Vektor mit dem klassischen For-Loop mit dem Index (Index) in den quadratischen Klammern durchlaufen werden. Es kann durch die rangebasierte Forderung geschoben werden. Es kann auch durch die Funktion für die für die Algorithmusbibliothek enthaltene FOR_EACH () -Funktion geschoben werden.