| 59 | public: |
| 60 | // Iterator implementation (RandomAccessIterator) |
| 61 | class iterator { |
| 62 | public: |
| 63 | typedef T value_type; |
| 64 | typedef T& reference; |
| 65 | typedef T* pointer; |
| 66 | typedef fl::size difference_type; |
| 67 | typedef fl::random_access_iterator_tag iterator_category; |
| 68 | |
| 69 | private: |
| 70 | deque* mDeque; |
| 71 | fl::size mIndex; |
| 72 | |
| 73 | friend class deque; |
| 74 | |
| 75 | public: |
| 76 | iterator(deque* dq, fl::size index) : mDeque(dq), mIndex(index) {} |
| 77 | |
| 78 | T& operator*() const { |
| 79 | return (*mDeque)[mIndex]; |
| 80 | } |
| 81 | |
| 82 | T* operator->() const { |
| 83 | return &(*mDeque)[mIndex]; |
| 84 | } |
| 85 | |
| 86 | iterator& operator++() { |
| 87 | ++mIndex; |
| 88 | return *this; |
| 89 | } |
| 90 | |
| 91 | iterator operator++(int) { |
| 92 | iterator temp = *this; |
| 93 | ++mIndex; |
| 94 | return temp; |
| 95 | } |
| 96 | |
| 97 | iterator& operator--() { |
| 98 | --mIndex; |
| 99 | return *this; |
| 100 | } |
| 101 | |
| 102 | iterator operator--(int) { |
| 103 | iterator temp = *this; |
| 104 | --mIndex; |
| 105 | return temp; |
| 106 | } |
| 107 | |
| 108 | iterator& operator+=(fl::size n) { |
| 109 | mIndex += n; |
| 110 | return *this; |
| 111 | } |
| 112 | |
| 113 | iterator operator+(fl::size n) const { |
| 114 | iterator temp = *this; |
| 115 | return temp += n; |
| 116 | } |
| 117 | |
| 118 | iterator& operator-=(fl::size n) { |