#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 (this->m_Index - delta < 0) { this->m_Index = -1; this->Iter = this->_end; } else { this->Iter += delta; this->m_Index -= delta; } } else // if (delta < 0) { if (this->m_Index - delta >= this->m_Count) { this->m_Index = this->m_Count; this->Iter = this->_end; } else { this->Iter += delta; this->m_Index -= delta; } } } inline void operator += (int NumberOfStep) { Step (NumberOfStep); } inline void operator -= (int NumberOfStep) { Step (-NumberOfStep); } }; }