So erhalten Sie Informationen in C ++ Verwendung eines Random Access Iterator

Die meisten Container können Sie willkürlichen Zugriff auf Daten, die sie enthalten, durchzuführen. Beispielsweise die Random Beispiel zeigt, dass Sie ein erstellen Iterator und fügen Sie dann zu oder Subtrahieren von dem aktuellen Verschiebungswerte innerhalb des Behälters zu erhalten, Iterator unterstützt:

#einschließen #einschließen using namespace std-int main () {Vektor Words-Words.push_back("Blue")-Words.push_back("Green")-Words.push_back("Teal")-Words.push_back("Brick")-Words.push_back("Purple")-Words.push_back("Brown")-Words.push_back("LightGray")-// Definieren Sie eine zufällige iterator.vector:: Iterator Iter = Words.begin () - // Zugriff zufällig points.Iter + = 5-cout lt; lt; * Iter lt; lt; Endl-Iter - = 2-cout lt; lt; * Iter lt; lt; Endl-return 0-}

In diesem Fall ist die Vektor, Worte, enthält eine Liste von sieben Elemente. Der Code erstellt ein Iterator für Wörter genannt iter. Es fügt dann zu oder subtrahiert von der Iterator Offset und zeigt die Ausgabe am Bildschirm. Hier ist, was Sie sehen, wenn Sie dieses Beispiel auszuführen:

BrownBrick

Manchmal braucht man eine besondere Aufgabe mit einem Random-Access auszuführen Iterator. Zum Beispiel könnten Sie eine spezielle Funktion zu erstellen, um die Mitglieder zu aufsummieren Vektor oder einfach nur eine Reihe von Mitgliedern innerhalb Vektor.

In diesem Fall müssen Sie eine spezialisierte Funktion erstellen, um die Aufgabe auszuführen, wie folgt, weil der Standard Library es keine Funktionen enthalten, um für Sie tun, wie es in der gezeigt RandomAccess2 Beispiel:

#einschließen #einschließen using namespace std-template float AddIt (RandomAccessIterator beginnen, RandomAccessIterator Ende) {float Summe = 0-RandomAccessIterator Index - // Stellen Sie sicher, dass die Werte in der richtigen order.if sind (Anfang> Ende) {RandomAccessIterator temp-temp = begin-begin = End-End = temp-} for (Index = beginn Index! = End Index ++) Summe + = * Index-return Summen-} int main () {vector Numbers-Numbers.push_back(1.0)-Numbers.push_back(2.5)-Numbers.push_back(3.75)-Numbers.push_back(1.26)-Numbers.push_back(9.101)-Numbers.push_back(11.3)-Numbers.push_back(1.52)-// Summe den einzelnen members.float Sum-Sum = AddIt (Numbers.begin (), Numbers.end ()) - cout lt; lt; Summe lt; lt; Endl-Summe = AddIt (Numbers.end (), Numbers.begin ()) - cout lt; lt; Summe lt; lt; Endl - // Summe ein range.vector:: Iterator Iter = Numbers.begin () - Iter + = 5-Summe = AddIt (Iter, Numbers.end ()) - cout lt; lt; Summe lt; lt; Endl-return 0-}

Dieses Beispiel basiert auf dem vorhergehenden Beispiel. Sie noch erstellen Vektor, Zahlen, und mit Daten füllen. Allerdings ist in diesem Fall erstellen Sie eine Ausgangsgröße, Summe, dass enthält die Summe der enthaltenen Elemente in Nummern.

AddIt () ist eine spezielle Funktion, die zwei akzeptiert RandomAccessIterator Werte als Eingabe. Diese beiden Eingänge stellen einen Bereich innerhalb der Vektor dass Sie in irgendeiner Weise zu manipulieren. Das Beispiel fügt einfach sie, aber Sie können jede Aufgabe, die Sie wollen durchführen. Der Ausgang ist ein schweben dass enthält die Summe.

AddIt () wie erwartet funktioniert. Sie nennen es, wie Sie würde jede andere Funktion und einen Ausgangspunkt bieten und einen Endpunkt innerhalb Vektor. Die ersten beiden Anrufe AddIt Summe die gesamte Vektor, während der dritte schafft ein Iterator, ändert seinen Offset und summiert dann einen Bereich innerhalb Vektor. Hier ist die Ausgabe aus diesem Beispiel:

30.43130.43112.82

Eine random-access Iterator in beide Richtungen gehen kann. Darüber hinaus können Sie mit einzelnen Mitgliedern innerhalb des Behälters arbeiten versorgt Iterator. Als Ergebnis erzeugen die Funktionen, die Sie für Iterator müssen mit den Eingängen in beliebiger Reihenfolge arbeiten können. Wie Sie diese Anforderung umgehen, hängt von der Art der Funktion, die Sie erstellen.

Menü