Vector löschen
-
Bisher mache ich es so, wenn ich einen Vector löschen will
while(vec.size()) vec.pop_back();
Geht das nicht auch einfacher ?
-
Hi,
vec.resize(0);
grüße Con@n
-
vec.clear()
das trifft es denke ich genau.
-
Danke für die schnelle Hilfe.
-
Con@n schrieb:
Hi,
vec.resize(0);
grüße Con@n
KPC schrieb:
vec.clear()
das trifft es denke ich genau.
Beide Varianten löschen aber nur die Elemente des Vektors, nicht aber den belegten Speicher.
Wenn du beides willst, hilft:
vector<DeinTyp>().swap(vec);
-
Besteht ein Unterschied zwischen
vector<DeinTyp>().swap(vec);
und
vector<DeinTyp>(vec).swap(vec);
?
-
natuerlich
vector().swap(vec);
ist mit folgendem gleich zu setzen:
vector temp;
vec=temp;waehrend
vector(vec).swap(vec);
mit folgendem gleichzusetzen istvector temp;
temp=vec;
vec=temp;
-
vector<DeinTyp>(vec).swap(vec);
Das ist "shrink-to-fit". D.h. unter Beibehaltung aller Elemente des Vektors wird überflüssige Vektor-Kapazität freigegeben. Hier ändert sich nur vec.capacity().
vector<DeinTyp>().swap(vec);
Das ist "clear-and-shrink-to-implementation-defined-capacity-minimum".
Hier werden also alle Elemente des Vektors gelöscht (vec.size() == 0) sowie seine Kapazität auf ein Minimum reduziert (vec.capacity() == MIN_CAPACITY).