Hallo zusammen, worin unterscheiden sich Vektoren und Arrays in C++ voneinander? Was sind die Vorteile von Vektoren gegenüber Arrays? Die Schreibweise von Arrays finde ich um einiges klarer als die von Vektoren, z.B.: int A[2][3]; vector<vector<int>> A; Grüße cpp
Ein Vektor ist ein Container, der sich grob selbst verwalten kann, was die Groesse angeht. Ein Array wird angelegt und hat eine feste groesse. In einem Vektor hast du aber dynamische Speicherverwaltung. Beispiel: Du legst einen Vektor mit 6 Elementen an. Sind die 6 Elemente belegt, wird neuer Speicher angefordet. Der Speicher wird verdoppelt, so dass der Vektor jetzt 12 Elemente fassen kann. Entnimmst du dem Vektor Elemente, wird wieder Speicher freigegeben, und zwar wenn der Vektor nur noch ein viertel belegt ist, wird der Speicher um die haelfte verkleinert. Start: Vektor der groesse 6. Es werden 6 Elemente in den Vektor gepakt. Vektor vergroesserung auf Groesse 12. Element entnahme, bis nur noch 3 Elemente im Vektor sind. Vektor verkleinerung von 12 auf 6. Du musst dir also keine Gedanken darueber machen, wie viele Elemente du Speichern willst. Bei einem Array, egal ob statisch oder dynamisch, musst du aber wissen wie viele Elemente es haben soll. Ein Array kannst du halt nicht vergroessern oder verkleinern. Wenn du das machen willst musst du Speicher anfordern, den Inhalt des alten Arrays ins neue Array kopieren, das alte Array freigeben.
Hallo cpp, cpp schrieb: > worin unterscheiden sich Vektoren und Arrays in C++ voneinander? Offensichtlich hast du dich noch nicht sonderlich tief mit der Materie beschäftigt. Arrays haben eine feste Größe und belegen immer den Speicherplatz. Ein vector hingegen hat eine dynamische Größe, je nach dem wie viel du in den vector hineinschreibst ändert er seine Größe. Damit belegt er nur so viel Speicher, wie für die Elemente gebraucht wird (+ etwas in reserve, damit nicht bei jedem push_back() neuer Speicher alloziert werden muss). cpp schrieb: > Was sind die Vorteile von Vektoren gegenüber Arrays? Diese sollten aus dem oben genannten eigentlich hervorgehen. Sonst einfach mal google oder cppreference befragen (siehe Link von Dr. Sommer). cpp schrieb: > Die Schreibweise von Arrays finde ich um einiges klarer als die von > Vektoren, z.B.: > > int A[2][3]; > vector<vector<int>> A; Jetzt vergleichst du aber die "C-style" Arrays mit den "c++-style" vector. Ein fairer Vergleich wäre std::array<> vs. std::vector<> Klar, an die ganzen <...> muss man sich echt gewöhnen, aber da kommt man in der C++-Standard-Bibliothek halt nicht drum rum. Dafür bekommt man auch einen minimalen Overhead (der durchaus auch 0 sein kann). Mit freundlichen Grüßen, N.G.
Beitrag #5258533 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.