Doch es geht. Wenn man den Speicher nicht linear auf die benoetige Groesse erhoeht, sonder z.B. immer auf die naechste Zweierpotenz aufrundet hat man zwar minimalen Speicherverlust, reduziert aber die amortisierte Laufzeit beim Wachsen von quadratisch auf linear.
Ich weiß - siehe >>Halbdynamisches Array<<
Der Performance-Vorteil besteht dann aber nur beim Hinzufügen ans Ende. Einfügen und Entfernen innerhalb sind weiter die Domäne einer Arraylist.
Es ist auch keine Verbesserung von Redim, da dessen Funktionalität ja erhalten bleibt und bleiben soll. Verändert wird hingegen das Verhalten einer Funktion wie _ArrayAdd. Redim wird nicht angetastet.
In C++ gibt es eine, die sich deque nennt und reserviert den Speicher in mehreren grossen Bloecken (meistens 4 kb). Die ganze Datenstruktur funktioniert wie ein Array, laesst sich aber wesentlich schneller fuellen.
Standardisiert ist das bei der Deque meines Wissens nach nicht. Es kann auch vorkommen, dass die Deque als doppelt-verkettete Liste implementiert ist. Ich weiß aber nicht in welcher STL nun welche der beiden Implementierungen genommen wird.
Edit: Jetzt weiß ich wieder wo ich die Deque als linked-list kenne: Python. Ob in C++ die Deque teilweise auch als linked-list implementiert wird weiß ich nicht.