vector elemente löschen
-
hallo liebe leute..
hab eine kleine frage zu std::vector.ein vector wird erstellt:
vector<element*> v;danach wird er mit ein paar objektzeigern befüllt:
for(.....){ v.push_back(new element(x, y)); }später im programm sollen die ganzen elemente aus dem vector gelöscht werden....
for(...) { delete v[i]; } v.clear();an diesem punkt liefert v.size() 0.
später kommen wieder elemente in den vector rein
wenn ich allerdings ein element dazupushe ist der vector schon 5 groß statt 1 ?
was passiert da?
wie kann ich alle elemente vom vector löschen und seine größe definitiv auf 0 setzen...?
-
Nachdem du
clear()aufrufst, gibt dirsize()immer 0 zurück. Und jedespush_back()erhöht die Grösse um 1, du scheinst wohl etwas falsch gemacht zu haben. Hast du Code, der den Fehler reproduziert?Und du meinst nicht
capacity(), oder?
-
danke hast mir schon geholfen

hab den aufruf von clear an der falschen stelle gehabt...stimmt das löschen so?
oder kann ich mir das delete sparen?for(...) { delete v[i]; } v.clear();
-
Nein, weil du die Elemente mit
newanforderst, brauchst du sie auch mitdeletefreizugeben. Allerdings verfehlt das meiner Ansicht nach eine wichtige Aufgabe von Containern, nämlich dir die Speicherverwaltung abzunehmen. Spricht etwas gegenstd::vector<element>? Dann bräuchtest du nämlich wedernewnochdelete.
-
Nexus schrieb:
Nein, weil du die Elemente mit
newanforderst, brauchst du sie auch mitdeletefreizugeben. Allerdings verfehlt das meiner Ansicht nach eine wichtige Aufgabe von Containern, nämlich dir die Speicherverwaltung abzunehmen. Spricht etwas gegenstd::vector<element>? Dann bräuchtest du nämlich wedernewnochdelete.nein würde nix dagegensprechen.....
dankeschön