STD einträge löschen

Hiho,
meine Frage ist: wie lösche ich mehrere Einträge in einem std::vector ohne nach jedem mal einen neuen Iterator anzufordern, geht das? im moment mach ich eine negativ-kopie, also kopiere alle einträge die nicht zu löschen sind, aber gefallen tut mir das nicht.

mfg TLF

Hallo TheLordFerada,

meine Frage ist: wie lösche ich mehrere Einträge in einem
std::vector ohne nach jedem mal einen neuen
Iterator anzufordern, geht das? im moment mach ich eine
negativ-kopie, also kopiere alle einträge die nicht zu löschen
sind, aber gefallen tut mir das nicht.

Meiner Meinung nach ist es eine falsche
Konzeption, auf einen std::vector eine
„Löschung“ von Elementen anwenden zu
wollen. Dafür gibt es std::deque oder
std::list, je nach tatsächlichem
Vorhaben.

http://www.codeguru.com/Cpp/Cpp/cpp_mfc/stl/article…

Was willst Du denn machen?

Grüße

CMБ

meine Frage ist: wie lösche ich mehrere Einträge in einem
std::vector ohne nach jedem mal einen neuen
Iterator anzufordern, geht das? im moment mach ich eine
negativ-kopie, also kopiere alle einträge die nicht zu löschen
sind, aber gefallen tut mir das nicht.

Dafür gibt es remove_if:
http://www.sgi.com/tech/stl/remove_if.html

Das dürfte allerdings eine relativ „teure“ Operation sein, weil vector auf Arrays basiert. Wenn du größere Datenmengen hast, solltest du eventuell einen Blick auf den Container rope werfen oder überlegen, ob du nicht überhaupt mit einer Liste auskommst, bei der diese Operation im wesentlichen linearen Zeitaufwand hat.

Eigenantwort…

Das dürfte allerdings eine relativ „teure“ Operation sein,
weil vector auf Arrays basiert.

Nach der Dokumentation die ich verlinkt habe, ist das wohl doch nicht so. Lies’ dir das Beispiel durch, da wird mehr oder weniger genau das erklärt, was du brauchst.