003
17.02.2006, 00:11 Uhr
virtual
Sexiest Bit alive (Operator)
|
Generell solltest Du so selten wie möglich reserve aufrufen. Denn anders als in C gibt es in C++ kein realloc, sondern im Falle einer Kapazitätserhöhung eines Vectors wird komplett neuer Speicher angelegt und für alle bereits im Vector enthaltenen Elemente der Copyconstructor aufgerufen und die Originalen Objekte werden gelöscht. Genau dieser Umstand macht Vergrößerungen eines Vectors so unangenehm.
Reserve in Regelmäßigen Abständen aufzurufen ist daher eine eher schlechte Idee. Wenn Du nicht weisst, wie viele Elemente es letztlich sein werden, dann würde ich eher einmal ein reserve machen, welches entweder Platz für die Mindestanzahl oder aber Platz für die Durchschnittlich zu erwartende Anzahl von Elementen macht. Sollte Danach noch weiterer Speicher notwendig sein, würde ich mich darauf verlassen, daß es die Vector Implementierung schon möglichst effizient regeln wird. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |