Liste rückwärts durchlaufen
-
Hi! Ich versuche eine Liste rückwerts zu durchlaufen, leider will dies bei mir nicht klappen:
std::list<GUIElement*>::iterator it = Children.end(); for (; it != Children.begin(); --it) { }anders herum funktioniert das ganze jedoch:
std::list<GUIElement*>::iterator it = Children.Begin(); for (; it != Children.end(); ++it) { }Ich vermute das ist ein ganz kleiner Denkfehler, doch ich komme nicht drauf.
-
Iterier doch lieber vorwärts von rbegin() bis rend()

-
Ansonsten bei --end() anfangen, vorher natürlich prüfen ob die Liste nicht leer ist...
-
Die muss schon rückwerts laufen

-
wenn du den reverse_iterator und rbegin() und rend() nimmst, läufst du mit ++ rückwärts durch.
-
std::list<GUIElement*>::reverse_iterator it = Children.rbegin(); for (; it != Children.rend(); ++it) { // ... }reverse_iteratorist meistens so ein Wrapper um einen normalen Iterator:
http://www.cplusplus.com/reference/misc/iterator/reverse_iterator/Beim durchlesen, dürfte dir klar werden, was da eigentlich passiert

Grüssli