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