Kann man Arrays dynamisch vergrößern?
-
deswegen benutzt man auch die ganzen tollen STL-Container, wie zB. std::vector
-
Hi,
die verwenden aber intern auch meine Methode. Trotzdem stimme ich dir zu, man sollte sie allein schon wegen der Sicherheit (Stichwort Bereichsprüfung) verwenden.
ChrisM
-
@ChrisM
nur arbeitet std::vector mit einem cache, so das nicht bei jeder push-Operation unbedingt neuer Speicher reserviert wird etc. Ist alles eben komfortabler
-
Meinst du es wird beim Erzeugen des Objekts vom Typ vector gleich eine feste Anzahl von dynamischem Speicher zugelegt und wenn diese überschritten wird, wird eine noch größere Anzahl erzeugt und die alten Elemente werden in diese teilweise kopiert?
-
jo, siehe auch std::vector::reserve und std::vector::capacity
-
Danke, ich war mir nur bei meiner Theorie nicht wirklich sicher. Es gibt in dem Fall allerdings einen Überlauf, aber ob das wirklich schlimm ist?
-
wieso nicht einfach anstatt der 10, eine variable nehmen?
-
ChrisM schrieb:
die verwenden aber intern auch meine Methode.
Verwenden die nicht den Copy-Constructor anstelle memcpy? Ich bin mir gerade nicht sicher...
-
Hi,
ja, die verwenden AFAIK den Copykonstruktor. Mit Methode meinte ich eigentlich nur, dass sie halt kein realloc() verwenden.
ChrisM
-
Woher wisst ihr denn wie das genau aufgebaut ist? Ich kann das nur raten...
-
weil es einen Standard gibt, der einige Voraussetzungen stellt.
Siehe 23.1 im ISO C++ Standard.
Ansonsten schau dir einfach mal die Standard-Library Implementierungen an