Aufbau der C++ Standardcontainer
-
Hallo,
kennt jemand eine Seite, wo der Aufbau der C++ Standardcontainer erläutert wird? Also von nem Vector weiß ich, dass er intern einen zusammenhängenden Speicherbereich hat, und bei Reallozierung ggf. einen größeren Speicherbereich beantragt. Dazu gibt es dann auch die wahre Größe und die Capacity.
Wie verhält sich das zu anderen Containern? Welche Datenstrukturen sind dahinter versteckt? Eine Liste besteht z.B. nur aus einer einfachen Liste, oder eine doppelt verkettete? Wie sieht ein Stack aus, bzw. warum ist das nur ein "Containeradapter"?
-
http://magazin.c-plusplus.net/artikel/Aufbau der STL - Teil 1%3A Container
Sollte viele deiner Fragen beantworten.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Wie verhält sich das zu anderen Containern? Welche Datenstrukturen sind dahinter versteckt?
darueber wirst du sicher viele informationen finden, aber keiner wird dir 100% sagen koennen wie es denn ganz genau nu wirklich ist

Weil es gibt mehrere Impls der STL, und was genau die intern machen, verraet Dir nur die Impl selber ! die header anschauen und verstehen , zumindest versuchen
Aber eigentlich ist das auch ned der Sinn der sache. Die STL bietet dir ja grad deshalb eine Basis an schnittstellen bereit, die gewisse eigenschaften und funktionalitaet liefern, auf die du dich verlassen kannst.
Alles was darueber hinausgeht, ist eh undefiniert, bzw fuehrt zu undefiniertes verhalten ...Also fuer verstaendniss zwecke kann man sich die impl der STL anschauen, und lernen. Aber wenn man die spezialitaet seiner Impl versucht auszunutzen -> aua.
Bei vielen ist aber scho das verhalten bzw. der Name ein garant dafuer, das intern ne gewisse technik verwendet wird. ne dequeue wird sicher in wirklichkeit auch ne doppelt verkettete liste sein

und nen vector, da der seine daten hintereinanderliegen speichern muss (sonst verletzung der spezifikation) wird sicher irgendwie nen dynamisches array verwalten ...Wie sieht ein Stack aus, bzw. warum ist das nur ein "Containeradapter"?
Das ist nur ein Adapter, weil er durch einen anderen container (default meist dequeue) implementiert wird. Und durch den Stack nur das interface des Containers angepasst/reduziert wird. Man erlegt sich eigentlich nur mehr restriktionen und nen angepasstes Interface auf, wenn man nen stack verwendet
Ansonsten wuerde es mit ner dequeue genau so gehen 
Uebrigens der container der beim stack verwendet wird, ist nur per default vorgegeb und kann mittels den template parametern spezifiziert werden, zum beispiel kannst auch ne list als container nehmen ...
Ciao ...
-
Containeradapter schrieb:
Hallo,
kennt jemand eine Seite, wo der Aufbau der C++ Standardcontainer erläutert wird?
Die ISO-Norm ist die einzige offizielle Beschreibung der Container, dort werden auch die Randbedingungen für die Container definiert. Wenn es weniger offiziell sein soll, ist das Buch "The C++ Standard Library, Josuttis" ganz gut.