@@ -58,16 +58,15 @@ class prevector {
58
58
iterator (T* ptr_) : ptr(ptr_) {}
59
59
T& operator *() const { return *ptr; }
60
60
T* operator ->() const { return ptr; }
61
- T& operator [](size_type pos) { return ptr[pos]; }
62
- const T& operator [](size_type pos) const { return ptr[pos]; }
61
+ T& operator [](size_type pos) const { return ptr[pos]; }
63
62
iterator& operator ++() { ptr++; return *this ; }
64
63
iterator& operator --() { ptr--; return *this ; }
65
64
iterator operator ++(int ) { iterator copy (*this ); ++(*this ); return copy; }
66
65
iterator operator --(int ) { iterator copy (*this ); --(*this ); return copy; }
67
66
difference_type friend operator -(iterator a, iterator b) { return (&(*a) - &(*b)); }
68
- iterator operator +(size_type n) { return iterator (ptr + n); }
67
+ iterator operator +(size_type n) const { return iterator (ptr + n); }
69
68
iterator& operator +=(size_type n) { ptr += n; return *this ; }
70
- iterator operator -(size_type n) { return iterator (ptr - n); }
69
+ iterator operator -(size_type n) const { return iterator (ptr - n); }
71
70
iterator& operator -=(size_type n) { ptr -= n; return *this ; }
72
71
bool operator ==(iterator x) const { return ptr == x.ptr ; }
73
72
bool operator !=(iterator x) const { return ptr != x.ptr ; }
@@ -87,10 +86,8 @@ class prevector {
87
86
typedef std::bidirectional_iterator_tag iterator_category;
88
87
reverse_iterator () = default ;
89
88
reverse_iterator (T* ptr_) : ptr(ptr_) {}
90
- T& operator *() { return *ptr; }
91
- const T& operator *() const { return *ptr; }
92
- T* operator ->() { return ptr; }
93
- const T* operator ->() const { return ptr; }
89
+ T& operator *() const { return *ptr; }
90
+ T* operator ->() const { return ptr; }
94
91
reverse_iterator& operator --() { ptr++; return *this ; }
95
92
reverse_iterator& operator ++() { ptr--; return *this ; }
96
93
reverse_iterator operator ++(int ) { reverse_iterator copy (*this ); ++(*this ); return copy; }
@@ -118,9 +115,9 @@ class prevector {
118
115
const_iterator operator ++(int ) { const_iterator copy (*this ); ++(*this ); return copy; }
119
116
const_iterator operator --(int ) { const_iterator copy (*this ); --(*this ); return copy; }
120
117
difference_type friend operator -(const_iterator a, const_iterator b) { return (&(*a) - &(*b)); }
121
- const_iterator operator +(size_type n) { return const_iterator (ptr + n); }
118
+ const_iterator operator +(size_type n) const { return const_iterator (ptr + n); }
122
119
const_iterator& operator +=(size_type n) { ptr += n; return *this ; }
123
- const_iterator operator -(size_type n) { return const_iterator (ptr - n); }
120
+ const_iterator operator -(size_type n) const { return const_iterator (ptr - n); }
124
121
const_iterator& operator -=(size_type n) { ptr -= n; return *this ; }
125
122
bool operator ==(const_iterator x) const { return ptr == x.ptr ; }
126
123
bool operator !=(const_iterator x) const { return ptr != x.ptr ; }
0 commit comments