std::vector::clear()
-
Hallo,
ich habe zwei STL Implementierungen.
Nach einem reserve mache ich ein clear.
Die vertrauenswürdigere macht kein deallocate in clear().
Die andere macht ein deallocate.Was sagt der Standard dazu? Besitze leider keinen.
-
1. Click bei google; nicht direkt aus dem Standard, aber
http://groups.google.de/group/comp.lang.c++/msg/6b12bb49311e0123Gruss,
DeSoVoDaMu
-
gibt kein shrinken wegen O(n) amortized
-
zeitkomplexität schrieb:
gibt kein shrinken wegen O(n) amortized
Diese Garantie hat nichts mit Komplexitätsfragen zu tun. Es wird explizit gesagt, dass nach reserve keine Operation auf dieser Sequenz (nicht dem vector, auch wenn der Wortlaut etwas zweideutig ist - aber man denke an swap) zu einer Reallokation führt, solange deren Länge die spezifizierte Kapazität nicht überschreitet (ein capacity() mit kleinerem Argument tut also gar nichts, das steht aber auch noch explizit da).
-
Nur noch zu verschiedenen Implementierungen...:
Die STL von MSVC 6.0 und/oder 7.1 geben bei clear den Speicher frei, bei erase(begin(), end()) allerdings nicht. (EDIT: Kann mich nimmer genau erinnern, deswegen "und/oder" - bei einem von beiden war's mindestens so /EDIT)
Die STL von MSVC 8.0 hat clear() als erase(begin(), end()) implementiert, und gibt nixe frei.
Andere STLe kenn ich nicht.
-
Danke.