46 typedef typename std::iterator_traits<T>::value_type value_type;
47 typedef typename std::iterator_traits<T>::difference_type difference_type;
48 typedef typename std::iterator_traits<T>::pointer pointer;
49 typedef typename std::iterator_traits<T>::reference reference;
81 , m_index(that.m_index)
89 void set(
const T& it,
int index)
97 return m_index < that.m_index;
100 bool operator<(
const T& it)
const
104 bool operator<(
int index)
const
106 return m_index < index;
111 return (*
this < that) || (*
this == that);
113 bool operator<=(
const T& it)
const
117 bool operator<=(
int index)
const
119 return m_index <= index;
124 return m_index > that.m_index;
126 bool operator>(
const T& it)
const
130 bool operator>(
int index)
const
132 return m_index > index;
137 return (*
this > that) || (*
this == that);
139 bool operator>=(
const T& it)
const
143 bool operator>=(
int index)
const
145 return m_index >= index;
150 return (m_it == that.m_it) && (m_index == that.m_index);
152 bool operator==(
const T& it)
const
156 bool operator==(
int index)
const
158 return m_index == index;
163 return !(*
this == *that);
165 bool operator!=(
const T& it)
const
169 bool operator!=(
int index)
const
171 return m_index != index;
184 return it_index<T>(m_it + (index - 1) * m_index, m_index * index);
188 return it_index<T>(m_it - (m_index - m_index / index), m_index / index);
191 reference operator*()
const
195 pointer operator->()
const
248 m_it += (index - 1) * m_index;
255 m_it -= m_index - m_index / index;