Iterator C ++ i iterator odwrotny
Piszęiterator
(właściwie tak jestconst_iterator
dla mojego bieżącego obiektu i chcę również utworzyćreverse_const_iterator
również.
Rozejrzałem się dookoła, aby zobaczyć, jak to zrobić, i natknąłem sięto:
Zauważ jednak, że gdy iterator jest odwrócony, wersja odwrócona nie wskazuje na ten sam element w zakresie, ale na ten, który go poprzedza. Jest tak, aby uporządkować element przeszłości-końca zakresu: iterator wskazujący na element końcowy w zakresie, gdy jest odwrócony, jest zmieniany tak, aby wskazywał ostatni element (nie obok niego) ) zakresu (byłby to pierwszy element zakresu, jeśli jest odwrócony). A jeśli iterator do pierwszego elementu w zakresie jest odwrócony, odwrócona iteracja wskazuje element przed pierwszym elementem (byłby to element końcowy zakresu, jeśli jest odwrócony).
Czy to dzieje się z perspektywy użytkowników, czy kiedy wyłuskujesz areverse_iterator
czy to nie odstrasza tego, dając ci wartość / odniesienie do obiektu, którego używaszmyśleć to wskazuje? Czy to tylko szczegół wdrożenia?
Moje zrozumienie było:
for(i = obj.rbegin(); i != obj.rend(); i++)
był równoważny
for(i = obj.begin(); i != obj.end(); i++)
z wyjątkiem w odwrotnej kolejności. A więc*i
przejdzie do tyłu przez pojemnik w pierwszym przypadku i przejdzie do przodu przez pojemnik w drugim przypadku. Czy mój instynkt jest prawidłowy?