diff options
Diffstat (limited to 'vector.hpp')
-rw-r--r-- | vector.hpp | 122 |
1 files changed, 114 insertions, 8 deletions
@@ -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 { |