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