Контейнеры STL: Liste. Teil 4




Liste c ++, c ++ Liste, контейнеры C ++ STL , Standard Template Library, c ++ Behälter, bidirektionale Liste mit ++Im dritten Teil der Lehren aus der STL-Containern, мы закончили рассмотрение Vektoren, lassen Sie uns sagen, Typ Vektor<schweben> als Äquivalent einer Matrix von reellen Zahlen. Für diese "Arrays", um den Betrieb sehr schnell das Element für den Zugriff durchgeführt (Lese-Schreib) der Index und Einfügen, um ein Element zu Ende zu löschen Vektor. viel schlimmer (Leistung) die betriebs das Entfernen des Einsatzelementes durchgeführt irgendwo in der Mitte des Vektors, oder bewegliche Element von einer Position zu einer anderen.

beispielsweise, Vektorgröße 15 операция перемещения 10-го элемента в позицию 2 erfordert:

  • Denken Sie daran, in den Zwischen variable Element 10 Minuten;

  • für alle Elemente 9. bis 2. (umgekehrt, möglicherweise unter Verwendung der umgekehrten Iterator) Kopie die nächste Position (8 Kopiervorgänge);

  • zuvor in dem Zwischen variable Element gespeicherte wird in die Position kopiert 2;

insgesamt, für diese einfache Operation dauerte es uns 10 Kopiervorgänge. Jedes Element des Vektors, wie wir früher diskutiert, Es kann schwierig zu Fail-Verbundstruktur sein. И его копирование — это достаточно трудоёмкое действие.

für “Sammlungen”, wobei der aktive Zugabe von geplanten, löschen und verschieben Elemente, STL-Bibliothek bietet eine andere Art von Container - doppelt verknüpfte Liste, Liste. Für einen solchen Zugriff auf die Container-Elemente (Lesen, Rekord) seriell, nicht so effektiv. Aber die Additionsoperation, zu löschen oder die Reihenfolge der Elemente zu ändern ist sehr schnell.

Iterator Liste Es ist kein direkter Zugang Iterator. daher ist es nichtgelten Betrieb +, , +=, -=, und Behälter nichtzulässigen Betrieb Indexierungs. Итераторы для этого контейнера перемещаются последовательно операциями ++ und.

Um die Arbeit mit einem solchen Behälter zu illustrieren, schreiben wir alle das gleiche Problem der alle Primzahlen zu finden,, nicht mehr als N (für Konsistenz und Vergleich zu früheren Versionen):

Hier ist die erste Hälfte des Codes (Betreiber << Eine Liste) Nur dekorative Umsetzung für die Diagnostik und Bequemlichkeit, und der Rest der folgenden erfolgt:

  • geformt Liste Liste<int> натуральных чисел диапазона [2…N] – Linien 19 – 22;

  • für jede (übrig) Die Anzahl aller nachfolgenden Liste gelöscht кратные ему элементыReihe 31;

  • Und so weiter, bis, Noch eine andere Anzahl getestet werden nicht übersteigt die Quadratwurzel von N – Reihe 26 (in der Zahlentheorie zeigt, Teilbarkeit, die nicht auf N-1 überprüft werden kann,, einer Reihe, größer ist als die Quadratwurzel von N);

Der Merkmale des Codes, und Containerliste allgemein, Sie müssen darauf achten, was, dass nach dem Entfernen des Elements, Zeigt den aktuellen Wert des Iterators, Iteratorwert wird unsicher. Wenn wir wollen, zu wiederholen, um fortzufahren, wir arbeiten müssen, um mit Eine Kopie Iterator (ich Code gezeigt in).

Der Code ausgeführt wird, können wir überprüfen, dass die Ergebnisse genau ähnlich wie bei früheren Versionen. Vor dem Programmstart, nicht zu vergessen die Befehle gleich Argument zu definieren 300, wie wir in der vorigen Lektion haben.
Liste c ++, c ++ Liste, контейнеры C ++ STL , Standard Template Library, c ++ Behälter, doppelt verknüpfte Liste

Newsletter neue Lektionen über die Programmierung:


Ich bin damit einverstanden, Nachrichten zu empfangen von purecodecpp.com auf meine E-Mail

Datum
Seite
Контейнеры STL: Liste (doppelt verknüpfte Liste). Teil 4
Wertung
5
Ö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.

Hinterlasse eine Antwort

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