24 #ifndef __K2Iterator__ 25 #define __K2Iterator__ 38 template <
class Iterator,
class T,
class Distance = std::ptrdiff_t,
class Po
inter = T*,
class Reference = T&>
42 typedef Iterator iterator_type;
43 typedef typename std::iterator_traits<Iterator>::iterator_category iterator_category;
45 typedef Pointer pointer;
46 typedef Reference reference;
47 typedef Distance difference_type;
51 Iterator base()
const;
52 reference operator*()
const;
53 pointer operator->()
const;
62 reference operator[](difference_type n)
const;
71 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
77 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
85 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
93 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
95 typename K2Reverse_iterator<Iterator, T, Distance, Pointer, Reference>::reference
98 Iterator tmp = fCurrent;
102 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
104 typename K2Reverse_iterator<Iterator, T, Distance, Pointer, Reference>::pointer
110 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
119 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
129 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
138 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
148 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
156 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
164 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
173 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
182 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
184 typename K2Reverse_iterator<Iterator, T, Distance, Pointer, Reference>::reference
187 return fCurrent[-n-1];
190 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
196 return static_cast<bool16
>(lhs.base() == rhs.base());
199 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
202 operator< (const K2Reverse_iterator<Iterator, T, Distance, Pointer, Reference>& lhs,
205 return static_cast<bool16
>(lhs.base() < rhs.base());
208 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
214 return static_cast<bool16
>(lhs.base() != rhs.base());
217 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
223 return static_cast<bool16
>(lhs.base() > rhs.base());
226 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
232 return static_cast<bool16
>(lhs.base() >= rhs.base());
235 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
238 operator<=(const K2Reverse_iterator<Iterator, T, Distance, Pointer, Reference>& lhs,
241 return static_cast<bool16
>(lhs.base() <= rhs.base());
244 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
246 typename K2Reverse_iterator<Iterator, T, Distance, Pointer, Reference>::difference_type
250 return rhs.base() - lhs.base();
253 template <
class Iterator,
class T,
class Distance,
class Po
inter,
class Reference>
255 operator+(
typename K2Reverse_iterator<Iterator, T, Distance, Pointer, Reference>::difference_type n,
263 #endif //__K2Iterator__