1 #ifndef CORE_StrideIterator_HPP
2 #define CORE_StrideIterator_HPP
11 template<
class Ptr_Type, tInt Step>
19 typedef typename std::iterator_traits<Ptr_Type>::value_type
value_type;
22 typedef typename std::iterator_traits<Ptr_Type>::reference
reference;
25 typedef typename std::iterator_traits<Ptr_Type>::pointer
pointer;
104 self tmp = *
this; mPointer += Step;
return tmp;
109 mPointer -= Step;
return *
this;
115 self tmp = *
this; mPointer -= Step;
return tmp;
144 return (x.mPointer - y.mPointer) / Step;
157 return x.mPointer == y.mPointer; }
163 return x.mPointer != y.mPointer;
169 friend bool operator<(
self x,
self y) {
return x.mPointer < y.mPointer; }
this class describes a const iterator with a constant stride 2 templates parameter:
Definition: CORE_StrideIterator.h:12
self operator--(int s)
return the current element and set the iterator to previous element
Definition: CORE_StrideIterator.h:114
std::iterator_traits< Ptr_Type >::reference reference
reference value type
Definition: CORE_StrideIterator.h:22
self & operator++()
return the next element and set the iterator to next element
Definition: CORE_StrideIterator.h:95
friend bool operator==(self x, self y)
compare the 2 iterator if equal
Definition: CORE_StrideIterator.h:156
std::iterator_traits< Ptr_Type >::value_type value_type
copy value type
Definition: CORE_StrideIterator.h:19
std::random_access_iterator_tag iterator_category
type of iterator
Definition: CORE_StrideIterator.h:32
friend difference_type operator-(self x, self y)
return the number of difference elements number between 2 iterators
Definition: CORE_StrideIterator.h:143
reference operator*()
return the pointer of the iterator
Definition: CORE_StrideIterator.h:69
CORE_StrideIterator(const self &x)
copy constructor
Definition: CORE_StrideIterator.h:57
reference operator[](difference_type n)
access to n-th element of the list
Definition: CORE_StrideIterator.h:75
self & operator--()
return the previous element and set the iterator to previous element
Definition: CORE_StrideIterator.h:108
friend self operator+(difference_type x, self y)
add x elements to y iterator : y:=y+x
Definition: CORE_StrideIterator.h:136
CORE_StrideIterator()
default constructor
Definition: CORE_StrideIterator.h:47
friend self operator+(self x, difference_type y)
add y element to x iterator : x:=x+y
Definition: CORE_StrideIterator.h:127
self & operator+=(difference_type x)
move the iterator on x elements
Definition: CORE_StrideIterator.h:84
self operator++(int s)
return the current element and set the iterator to next element
Definition: CORE_StrideIterator.h:103
std::iterator_traits< Ptr_Type >::difference_type difference_type
displacement type
Definition: CORE_StrideIterator.h:29
friend bool operator<(self x, self y)
compare the 2 iterators on same values
Definition: CORE_StrideIterator.h:169
CORE_StrideIterator(Ptr_Type x)
initializer constructor
Definition: CORE_StrideIterator.h:52
friend bool operator!=(self x, self y)
compare the 2 iterator if not equal
Definition: CORE_StrideIterator.h:162
std::iterator_traits< Ptr_Type >::pointer pointer
pointer value type
Definition: CORE_StrideIterator.h:25