vector capacity verkleinern
-
hola leute
beim bcb wird vector von rogue wave verwendet. da wird capacity immer wieder verdoppelt, wenn zuwenig speicher vorhanden ist. wie kann ich capacity auf z.b. size + 10 anpassen ?
Meep Meep
-
mit reserve
-
...falsch
-
Guck doch in der Deklaration der Klasse (im Header-File), ob es eine resize() Methode oder aehnliches gibt.
Es gibt auch vektor-Klassen, bei denen eine effektive Reduzierung des Speichers gar nicht moeglich (oder gewollt) ist.
Bei meinen eigenen Vektor-Klassen setze ich meist beim resize() immer nur den use-Count auf den neuen Wert (ausser, das Array wird groesser). Manchmal mache ich auch eine Methode optimize(), o.ae., die den Speicherverbrauch optimiert, was insbesondere bei grossen Arrays von Nutzen sein kann.
-
re
resize gibt es, aber damit kann ich capacity nicht aendern.
optimize() oder aehnliches hab ich auch nicht gefundensonst noch ne idee ?
Meep Meep
-
Meep Meep schrieb:
resize gibt es, aber damit kann ich capacity nicht aendern.
optimize() oder aehnliches hab ich auch nicht gefundenoptimize() hat sich versteckt unter dem idiom vector<Foo>(v).swap(v); oder so.
-
-
also die reserve()-Methode müsste es eigentlich schon sein. Die ist ja zum reservieren da. Ansonst kannst du es ja nochmal mit boost::array<> ausprobieren.
http://www.boost.org/doc/html/array.html
Wobei diese Klasse keine Größenänderung erlaubt.
-
danke, hab´s jetz mit swap hingekriegt. irgendwie scheint mir das recht umstaendlich. weiß jemand ob es dafuer einen grund gibt oder ob dies eher unter designfehler faellt ?
Meep Meep
-
Vielleicht wird es einfach nicht so extrem häufig gebraucht, dass man dafür extra ne eigene Funktion bereitstellt?