#pragma once #include "ReverseIterator.Base.tlh" //----------------------------------------------------------------------------- // RandomIterator // 支持随机访问的迭代器 //----------------------------------------------------------------------------- namespace ReverseIterator { template class __RandomIterator : public __BaseIterator { public: /// 之前的 Array::Iterator 有防护功能, 因此这里也限制过分的增减 inline void Step (int delta) { if (delta > 0) { if (m_Index - delta < 0) { m_Index = -1; Iter = _end; } else { Iter += delta; m_Index -= delta; } } else // if (delta < 0) { if (m_Index - delta >= m_Count) { m_Index = m_Count; Iter = _end; } else { Iter += delta; m_Index -= delta; } } } inline void operator += (int NumberOfStep) { Step (NumberOfStep); } inline void operator -= (int NumberOfStep) { Step (-NumberOfStep); } }; }