Bestimmte Elemente aus dem vector entfernen
-
Hallo Leute,
ich will alle Z-Elemente aus meinem vector entfernen, deren Wert kleiner ist als eine Vorgabe.
Der vector ist schon vorgegeben und hat folgende Struktur: x1, y1, z1, x2 , y2 ... usw.
void BodenAbschneiden( double grenze , std::vector<float> &wolke) const { for( vector<float>::iterator i = wolke.begin() ; i != wolke.end() ; i++ ) { if( *( i + 2 ) > grenze ) { // ganzen Punkt (3 Werte löschen) i = i.erase( i , i + 2 ); } else { // Springe zum nächsten Punkt i++; i++; } } }Jetzt habe ich zwei Probleme:
-
Ich weiß nicht ob man während einem durchlauf Elemente aus dem Vektor löschen kann.
-
VS2010 sagt, das die Funktion erase nicht existiert.
Könnte jemand bitte Helfen? Danke
-
-
Der iterator loescht keine Elemente, das macht der vector. Daher muss es heissen:
i = wolke.erase(i, i + 2);Und ja, du kannst waehrend des Iterierens Elemente loeschen, dazu ist der Rueckgabewert von erase naemlich da.
-
Unter Umständen musst du auch das i++ noch aus dem Schleifenkopf nehmen und stattdessen in das else packen.
-
Sicher, dass du nicht eine Struktur (o. Tupel) mit diesen Drei Werten haben willst?
Wie auch immer...
for(unsigned i = 2; i < wolke.size();i += 2) wolke.erase(wolke.begin() + i);
-
Habs hingekriet. Danke an alle Antwortenden.