Контейнеры STL: Vektor. Teil 3

Bewerten Sie diesen Artikel




контейнеры C ++ STL , Standard Template Library, Vektor ++, Vektor c ++

das die vorherige Lektion wir haben eine Variable vom Typ definiert Vektor<schweben>, als äquivalente array, die Größe von dem wir willkürlich den Verlauf der Ausführung des Codes ändern. Aber das bedeutet nicht, (sowie Vektoren für klassische C ++), Wir können also nur dynamische Arrays von einfachen integrierten Typen erstellen. Artikeltyp Vektor Es kann beliebig sein und beliebig komplex! beispielsweise, wir könnten als Studentengruppe beschreiben:

контейнеры C ++ STL , Standard Template Library, Vektor ++, Vektor c ++

In diesem Beispiel, unter anderem, wir angewandt dieser Zeiger und Überladen von Operatoren. Ich überlasse es Links zu Ihnen, wenn jemand braucht es in Erinnerung aufzufrischen.

Vector Template-Klasse (und jede STL-Container) kann sein, wiederum, контейнер STL. beispielsweise Vektor< Vektor<int> > oder Vektor< Vektor< Vektor<int> > > (vergessen Sie nicht, den Raum zwischen dem Schließbügel ‘>‘ - Es ist ein Merkmal der syntaktischen Parser). So können wir, beispielsweise, eine Klasse von Dreiecksmatrizen erstellen:

контейнеры C ++ STL , Standard Template Library, Vektor ++, Vektor c ++
Die nächste Stufe unserer in Vektoren Technik gehen, und STL-Container im Allgemeinen, Es ist das Konzept der Iterator. Iterator - das zentrale Konzept mit STL-Containern zu arbeiten. Iterator – es ist eine Abstraktion, die dazu verwendet wird zu iterieren (wiederholen) STL-Elemente in einem Behälter und den Zugang zu den einzelnen Elementen. Iterator p Es ist kein Zeiger, aber, zuerst, Sie können es bedingt ähnlich wie etwas in Erscheinung betrachten: *p den Wert der Daten unter der aktuellen Iterator bezeichnen, p ++ der Iterator zum nächsten Element in dem Behälter, und p– (wenn dies zulässig) - Im vorherigen Artikel. Für verschiedene Arten von Behältern, entsprechenden Iteratoren kann auf eine von 5 Kategorien gelten: Eingänge, Wochenende, unidirektionale, bidirektional und random access. Iteratoren Vektoren - einen Iterator direkten Zugang. Deshalb Vektoren können Indexierungsvorgang sein. diese, genug Oberfläche, Das Wissen über Iteratoren uns genug, beginnen mit ihnen zu arbeiten.

Vosproizvedёm Iteratoren in Bezug auf das Problem der alle Primzahlen zu finden,, nicht mehr als N (Sieb des Eratosthenes), wir haben schon früher entschieden Technik C ++ Arrays:

Wie leicht aus der Beschreibung ersichtlich, Vektor<bool>::Iterator, Iterator, der eine Art von Behälter hält, der sich auf, und die Art dieses Behälters. Dies erfordert sehr umständlich, eine genaue Beschreibung der Art von Iterator zu schreiben. Aber die neueste C ++ 11-Standard wurde das Konzept Schlüpffähigkeit Typ: wenn die gewünschte Objekttyp wird aus dem Kontext ihrer Verwendung abgeleiteten, die Art des Objekts kann deklariert werden Auto (Ausgangstyp). Dann wird die Linie 16 den obigen Code kann gezeigt werden, geschrieben:

schließlich, Vektoren (und für alle Behälter, mit bidirektionales iteratorы, wie oben erwähnt) Es kann Reverse-Iteratoren definiert werden, nicht von Anfang bis zum Ende des Behälters bewegt, und umgekehrt - vom Ende bis zum Anfang. Dieser Iterator muss als ganz andere Art von deklariert werden, beispielsweise:

Aber hier können wir auf Typinferenz verlassen, wie in dem folgenden Beispiel:

контейнеры C ++ STL , Standard Template Library, Vektor ++, Vektor c ++

Alle entstehenden Fragen in den Kommentaren Lektion zu fragen.

Newsletter neue Lektionen über die Programmierung:

Öl

Etwa Öl

praktische Erfahrungen über die Softwareentwicklung 40 Jahre. Lehrer Globale Logik internationales Softwareunternehmen. IBM Developer Works Permanent Autor von Publikationen. Wissenschaftliche Herausgeber der Computerliteratur-Verlag "Symbol-Plus", Sankt Petersburg.

2 Gedanken zu "Контейнеры STL: Vektor. Teil 3

Hinterlasse eine Antwort

Platz Code in Tags: <pre class="lang:c ++ dekodieren:true ">DEIN CODE</Vor>