Piszę iterator
(w rzeczywistości jest to const_iterator
dla mojego obecnego obiektu i chcę także stworzyć reverse_const_iterator
również.C++ iterator i reverse iterator
Rozejrzałem się, aby zobaczyć, jak to zrobić i ja natknął this.
jednak zauważyć, że kiedy iterator ulega odwróceniu, odwrócona wersja nie wskazują na ten sam element w tym zakresie, ale do jednej go poprzedzający jest to więc, w celu ustalenia dla ostatniego-endowego elementu z zakresu: An it erator wskazujący na element typu koniec-koniec w odwróceniu, jest zmieniany w taki sposób, aby wskazywał na ostatni element (nie przez ten zakres) (byłby to pierwszy element zakresu, jeśli odwrócono by wartość ). A jeśli iterator pierwszego elementu w zakresie jest odwrócony, odwrócony iterator wskazuje na element przed pierwszym elementem (byłby to element końca okresu z zakresu, jeśli odwrócono by ).
Czy to, co się dzieje z perspektywy użytkownika, lub gdy dereference w reverse_iterator
robi to nie abstrakcyjny to z dala od co daje wartość/referencję obiektu uważasz jest wskazując? Czy to tylko szczegół implementacji?
Moje zrozumienie było:
for(i = obj.rbegin(); i != obj.rend(); i++)
była równoważna
for(i = obj.begin(); i != obj.end(); i++)
wyjątkiem w odwrotnej kolejności. Tak 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 poprawny?
po prostu działa. –
Uwaga: podczas pracy z iteratorami zawsze powinieneś używać przyrostu wstępnego ('++ i') zamiast post-inkrementacji, ponieważ może on być bardziej wydajny. –