rückwärts durch eine list iterieren
-
Hallo,
Ich möchte eine Liste durchsuchen und dabei vom letzen element zum ersten durch die liste iterieren.
wenn ich sie vorwärts durchsuche gibt es keine probleme:
for(it = mylist.begin(); it!=m_mylist.end();++it) { curElement= ((MyClass)(*it)); }würde ich jetzt schreiben:
for(it = mylist.end(); it!=m_mylist.begin();--it) { curElement= ((MyClass)(*it)); }gibt es immer wieder fehler wenn ich auf curElement zugreife.
Woran könnte das liegen?
Danke.
-
Das klappt nicht, weil end() auf kein gültiges Element zeigt. Du versuchst praktisch, die Liste um eins versetzt zu durchwandern, angefangen bei end(), aber begin() auslassend. Normalerweise beinhaltet ein Containter die Elemente von begin() bis dem Element gerade vor end(). Glücklicherweise gibt es Reverse Iteratoren:
for (list<MyClass>::reverse_iterator it = mylist.rbegin(); it != mylist.rend(); ++it) { curElement = *it; // ... }
-
cool, das gleich problem hatte ich auch.
thx