Bestimmten Wert aus vector löschen
-
Löschen kannst du nur durch Iterieren oder das letzte Element. Mit List z.B. könntest du mehr machen.
sadfasd schrieb:
Ja, und was glaubst du, was find macht?
-
Also kann ich das finden benutzen, obwohl es auch durchiteriert? Aber es ist doch einfacher in der handhabung als noch einmal eine Iteration zu schreiben oder?
-
tanja.hopfer schrieb:
Also kann ich das finden benutzen, obwohl es auch durchiteriert? Aber es ist doch einfacher in der handhabung als noch einmal eine Iteration zu schreiben oder?
Na, wenn du weißt, an welcher Position das Element liegt, dann musst du auch nicht suchen. Wenn du das nicht weißt, musst du suchen. Ist das nicht logisch?

-
tanja.hopfer schrieb:
Also kann ich das finden benutzen, obwohl es auch durchiteriert? Aber es ist doch einfacher in der handhabung als noch einmal eine Iteration zu schreiben oder?
Grundsätzlich ja. Ich bin davon ausgegangen, dass es dir nicht um die Schreibweise, sondern um das Konzept geht, d.h. um das Entfernen durch direkten Zugriff auf das Element (quasi
v[i].erase()).
-
tanja.hopfer schrieb:
Also kann ich das finden benutzen, obwohl es auch durchiteriert? Aber es ist doch einfacher in der handhabung als noch einmal eine Iteration zu schreiben oder?
natürlich kannst du das benutzen. In deinem Ursprungsposting klang es nur so, als wolltest du iterieren vermeiden. Wenn es dir nur darum geht, dass du das iterieren gerne automatisieren möchtest, dann ist die Kombination find+erase genau das richtige für dich.
-
Danke euch :).
Also wie würde das an einem Beispiel füpr das Löschen der zahl 7 aus myvector aussehen? Etwa so:
std::vector<double>::iterator it; it = find (myvector.begin(), myvector.end(), 7); myvector.erase (it);
-
daddy_felix schrieb:
natürlich kannst du das benutzen. In deinem Ursprungsposting klang es nur so, als wolltest du iterieren vermeiden. Wenn es dir nur darum geht, dass du das iterieren gerne automatisieren möchtest, dann ist die Kombination find+erase genau das richtige für dich.
Man sollte wohl noch darauf hinweisen, dass dies nur das erste Vorkommen löscht. Wenn man alle Kopien eines Wertes löschen möchte, dann nimmt man remove (oder remove_if oder ähnliches) und ein anschließendes erase:
http://en.wikipedia.org/wiki/Erase-remove_idiom
-
Aber ist das oben genannte Beispiel in der Form korrekt?
-
tanja.hopfer schrieb:
Aber ist das oben genannte Beispiel in der Form korrekt?
ja
-
Ok. Danke euch allen für eure Beiträge
