STL-List durchiterieren ohne erstes und letztes Element
-
Hallo,
wie modifiziere ich folgendes Standardschleifenkonstrukt, damit es nicht über das erste und letzte Listenelement läuft:
list<string> text; //wird dann gefuellt for(list<string>::iterator i= text.begin(); i != text.end(); ++i) { //mach was damit }Dankeschön!
-
list<string>::iterator iStart = text.begin ()++, iEnd = text.end ()--;
-
list<string> text; //wird dann gefuellt typedef list<string>::iterator LI; for (LI i = text.begin(); i != text.end(); ++i) { //mach was damit }Blackbird
-
hört sich wie ein wtf an...
-
zwei Fragen wirft das auf:
1. was ist "wtf"
2. verändert folgendes nicht den Inhalt von text.begin() und text.end()?
list<string> text; //wird dann gefuellt for(list<string>::iterator i= (text.begin())++; i != (text.end())--; ++i) { //mach was damit }
-
Nö. Du kriegst nicht eine Referenz sondern ne Kopie und die veränderst du.
Ansonsten würd ich anstelle des (text.end())-- eine Variable verwenden und diese auf das vorletzte Element setzen.
Es ist an der Stelle nicht notwendig bei jedem Schleifendurchlauf einen Iterator zu erzeugen und zu inkrementieren.
-
Mathias schrieb:
iEnd = text.end ()--;Würde iEnd nicht jetzt auf das letzte Element zeigen ???
end() gibt doch einen Zeiger ein Element nach dem letzten Element zurück...

-
Freak_Coder schrieb:
Mathias schrieb:
iEnd = text.end ()--;Würde iEnd nicht jetzt auf das letzte Element zeigen ???
end() gibt doch einen Zeiger ein Element nach dem letzten Element zurück...

Das ist doch richtig, Er will ja ein Element am Ende weglassen.
Aber man sollt noch überprüfen, ob die Liste mindestens 2 Elemente hat, sonst funktioniert der Code nicht
-
Uups jetzt wird's mir klar
