speed von einem vector Array
-
und wie ist es, wenn ich den vector nicht nur erweiter sondern auch immer dem benötigten Punkten verkleiner? Ist eine solche Operation sehr aufwendig (wobei es eh nicht allzu sinnvoll ist, wenn ich drüber nachdenke)
-
ein Vector verhält sich doch so wie ein Array, oder?
Dann muss man aber auch bedenken, dass wenn man z.B. einen Vector mit 200.000 Elementen hat und dann ein paar weitere angehängt werden, dass dann nicht genügend Platz am Ende des Arrays ist. (Wenn man sich den Heap vorstellt)
Dann müsste sich der Vektor einen neuen größeren Platz auf dem Heap suchen, und dort die gesamten 200.000 alten Daten hinkopieren, oder?
Das könnte langsam werden. (wenn es ungünstig läuft)
-
Nene, also ein Vector, wenn du bei dem die Größe veränderst, veränderst du auch die größe des reservierten Speicherplatzes.
-
vector<T> ist langsamer, als ein lokales statisches array.
-
beim iterieren nicht
-
Das der langsammer ist habe ich nie bestritten... aber wie viel langsammer?
-
Miss nach. Wenn es keine zeitkritische Anwendung ist dürfte es nix ausmachen...
[ Dieser Beitrag wurde am 29.05.2003 um 17:19 Uhr von MaSTaH editiert. ]
-
Original erstellt von davie:
beim iterieren nichtWieso?
-
Original erstellt von MaSTaH:
[quote]Original erstellt von davie:
[qb]beim iterieren nichtWieso?
[/QB][/QUOTE]
Wieso nicht?
-
Weil beim inkrementieren von einer Zählervariablen (z.B.) ein einfaches inc gemacht wird. Beim inkrementieren eines Iterators wird aber erst der ++Operator der Iteratorklasse aufgerufen.
EDIT: Oder sehe ich das falsch...?
[ Dieser Beitrag wurde am 30.05.2003 um 13:03 Uhr von MaSTaH editiert. ]
-
... welcher inline sein kann, so dass das im Endeffekt bei einem Vektor nur eine Pointerinkrementierung ist. Also ADD x, sizeof(T)