003
08.11.2005, 10:38 Uhr
ao
(Operator)
|
Zum Beispiel std::vector<T> oder std::list<T>
Die Grundanforderung (beliebig viele gleichartige Objekte festhalten) können beide Container. Welcher besser geeignet ist, kommt auf die Anwendung an:
vector ist ein Array, d.h. die Elemente liegen im Speicher benachbart. Das ist günstig, wenn auf existierende Elemente indiziert zugegriffen wird, und ungünstig beim Einfügen und Löschen von Elementen oder beim Sortieren, da müssen nämlich die Inhalte umkopiert werden.
list ist eine verkettete Liste, d.h. jedes Element trägt einen Verweis auf das nächste. Der indizierte Zugriff auf Elemente ist natürlich auch hier möglich, muss aber abgebildet werden auf ein Durchlaufen der Liste vom Anfang (oder auch Ende) bis zum gewünschten Element, das ist performancemäßig ungünstig. Dafür geht das Einfügen, Löschen und Umsortieren rasend schnell, weil nur Referenzen oder Pointer umgesetzt werden müssen.
ao |