123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #pragma once
- #include "ReverseIterator.Base.tlh"
- //-----------------------------------------------------------------------------
- // RandomIterator
- // 支持随机访问的迭代器
- //-----------------------------------------------------------------------------
- namespace ReverseIterator
- {
- template <typename IterType>
- class __RandomIterator : public __BaseIterator <IterType>
- {
- 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);
- }
- };
- }
|