1 #ifndef __MULTI_DIM_ITERATOR_H__
2 #define __MULTI_DIM_ITERATOR_H__
40 std::vector<T> m_dims, m_pos;
50 const std::vector<T>& operator*()
const {
return m_pos; }
51 bool atEnd()
const {
return m_atEnd; }
62 void MultiDimIterator<T>::gotoBegin()
64 m_pos = std::vector<T>(m_dims.size(), 0);
66 size_t numDims = m_dims.size();
67 for (
size_t i = 0; i < numDims; ++i)
78 void MultiDimIterator<T>::gotoLast()
80 m_pos = std::vector<T>(m_dims.size());
82 size_t numDims = m_dims.size();
83 for (
size_t i = 0; i < numDims; ++i)
85 m_pos[i] = m_dims[i] - 1;
94 void MultiDimIterator<T>::operator++()
101 if (m_dims.size() == 0)
106 size_t numDims = m_dims.size();
107 for (
size_t i = 0; i < numDims; ++i)
110 if (m_pos[i] < m_dims[i])
return;
117 void MultiDimIterator<T>::operator++(
int)
123 void MultiDimIterator<T>::operator--()
130 if (m_dims.size() == 0)
135 size_t numDims = m_dims.size();
136 for (
size_t i = 0; i < numDims; ++i)
143 m_pos[i] = m_dims[i] - 1;
150 void MultiDimIterator<T>::operator--(
int)
157 #endif //__MULTI_DIM_ITERATOR_H__