Element in einem Vector löschen
-
Firefighter schrieb:
puhh ich glaube ich sollte mir ma angucken was iteratoren sind...aber so es einfach so heir machen kann ich net
In Kurzfassung: zeigerähnliche Objekte, die sich mit der Struktur des unterliegenden Containers auskennen. Genaueres findest du z.B. in meinen Magazin-Artikeln (Aufbau der STL).
also so einfach geht es net oder???
Nein - erase() erwartet einen Iterator, der auf das zu löschende Element verweist.
-
könntest du das beispiel nochmal so gestalten das der user voher eine zahl eingeben muss und diese dann mit in dieser sache von erase verwaltet wird?? weil mir fällt das ein bissel schwer durch die sache mit den iteratoren durchzublicken
-
vector<int> Liste; Liste.Add(1); Liste.Add(2); Liste.Add(3); Liste.Add(4); Liste.Add(5); int iZahlDieGelöschtWerdenSoll = 3; // Zahl 3 aus vector löschen! vector<int>::iterator pos=find(Liste.begin(),Liste.end(),iZahlDieGelöschtWerdenSoll); Liste.erase(pos);
-
Firefighter schrieb:
könntest du das beispiel nochmal so gestalten das der user voher eine zahl eingeben muss und diese dann mit in dieser sache von erase verwaltet wird?? weil mir fällt das ein bissel schwer durch die sache mit den iteratoren durchzublicken
Sorry, wenn meine Beispiele ein wenig minimalistisch ausfallen, aber ganz wollte ich dir das Denken nicht abnehmen (und ich hatte gehofft, die Variablennamen wären aussagekräftig genug, um zu erkennen, daß z.B. 'zielwert' der Wert ist, den du suchen und löschen möchtest)
-
ok jetzt ist es klar...aber ma noch ne frage muss ich da nen ebstimmten header mit einbinden??
-
algorithm.h
-
BorisDieKlinge schrieb:
algorithm.h
Fast richtig - der heißt <algorithm> (C++ Standardheader haben keine Dateiendung)
-
jop ok super danke... und wie könnte ich es machen das ich den ganzen vektor lösche, soll ich da einfach ne schleife machen wo jedes einzelne element mit dem iterator zeug gelöscht wird ...oder geht es einfacher??
-
Du willst alle Elemente des vector's löschen (also einen komplett leeren vector)? Wenn ja, der schnellste Weg ist
vec.clear();
(dicht gefolgt vonvec.erase(vec.begin(),vec.end());
).
-
also wenn mein vector Liste heißt, kann ich einfach ohne irgendwelches vorgeplänkel hinschreiben
Liste.clear();
und der vector ist gelöscht?? also geleert??
-
Firefighter schrieb:
und der vector ist gelöscht?? also geleert??
Gelöscht (==weg/zerstört/vernichtet) nicht - das passiert erst, wenn du den Scope verlässt, in dem er angelegt wurde. Geleert (==nichts mehr drin) ja.
(sorry für die Spitzfindigkeiten ;))