summaryrefslogtreecommitdiff
path: root/vector.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'vector.hpp')
-rw-r--r--vector.hpp122
1 files changed, 114 insertions, 8 deletions
diff --git a/vector.hpp b/vector.hpp
index b63d6b8..1dc82d6 100644
--- a/vector.hpp
+++ b/vector.hpp
@@ -25,8 +25,8 @@ namespace ft {
bool operator<=(const vector<T,Alloc>& lhs,
const vector<T,Alloc>& rhs);
template<class T, class Alloc>
- bool operator>(const ft::vector<T,Alloc>& lhs,
- const ft::vector<T,Alloc>& rhs);
+ bool operator>(const vector<T,Alloc>& lhs,
+ const vector<T,Alloc>& rhs);
template<class T, class Alloc>
bool operator>=(const vector<T,Alloc>& lhs,
const vector<T,Alloc>& rhs);
@@ -41,11 +41,77 @@ public:
typedef value_type& reference;
typedef const value_type& const_reference;
typedef typename Allocator::pointer pointer;
- /* TODO */
- typedef vector* iterator;
- typedef vector* const_iterator;
- typedef vector* reverse_iterator;
- typedef vector* const_reverse_iterator;
+ typedef T* iterator;
+ typedef T* const_iterator;
+ class reverse_iterator {
+ private:
+ T* _ptr;
+ public:
+ reverse_iterator(T* ptr) : _ptr(ptr)
+ {
+ }
+ reference operator*()
+ {
+ return *_ptr;
+ }
+ T* operator->()
+ {
+ return _ptr;
+ }
+ reverse_iterator& operator++()
+ {
+ _ptr--;
+ return *this;
+ }
+ reverse_iterator& operator++(int)
+ {
+ reverse_iterator tmp (*this);
+ _ptr--;
+ return tmp;
+ }
+ reverse_iterator operator--()
+ {
+ _ptr++;
+ return *this;
+ }
+ reverse_iterator operator--(int)
+ {
+ reverse_iterator tmp (*this);
+ _ptr++;
+ return tmp;
+ }
+ reverse_iterator& operator+=(difference_type n)
+ {
+ *this = *this - n;
+ return *this;
+ }
+ reverse_iterator operator+(difference_type n)
+ {
+ reverse_iterator tmp (*this);
+ tmp += n;
+ return tmp;
+ }
+ reverse_iterator operator-(difference_type n)
+ {
+ reverse_iterator tmp (*this);
+ tmp -= n;
+ return tmp;
+ }
+ reverse_iterator& operator-=(difference_type n)
+ {
+ *this = *this + n;
+ return *this;
+ }
+ bool operator==(const reverse_iterator& other) const
+ {
+ return _ptr == other._ptr;
+ }
+ bool operator!=(const reverse_iterator& other) const
+ {
+ return !(*this == other);
+ }
+ };
+ typedef const reverse_iterator const_reverse_iterator;
private:
size_type _size;
size_type _capacity;
@@ -199,7 +265,47 @@ public:
return _data;
}
- /* ITERATORS TODO */
+ /* ITERATORS */
+ iterator begin()
+ {
+ return _data;
+ }
+
+ const_iterator begin() const
+ {
+ return _data;
+ }
+
+ iterator end()
+ {
+ return _data + _size;
+ }
+
+ const_iterator end() const
+ {
+ return _data + _size;
+ }
+
+ reverse_iterator rbegin()
+ {
+ return _data + _size - 1;
+ }
+
+ const_reverse_iterator rbegin() const
+ {
+ return _data + _size - 1;
+ }
+
+ reverse_iterator rend()
+ {
+ return _data - 1;
+ }
+
+ const_reverse_iterator rend() const
+ {
+ return _data - 1;
+ }
+
/* CAPACITY */
bool empty() const
{