vector pretty good
This commit is contained in:
parent
f4c6e7db4b
commit
f978d9909a
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/10/30 16:14:35 by apommier #+# #+# */
|
/* Created: 2022/10/30 16:14:35 by apommier #+# #+# */
|
||||||
/* Updated: 2022/11/22 08:10:53 by apommier ### ########.fr */
|
/* Updated: 2022/11/22 10:55:39 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -80,12 +80,14 @@ namespace ft
|
|||||||
|
|
||||||
random_access_iterator &operator ++()
|
random_access_iterator &operator ++()
|
||||||
{
|
{
|
||||||
|
//std::cout << "operandom ++\n";
|
||||||
_ptr++;
|
_ptr++;
|
||||||
return (*this);
|
return (*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
random_access_iterator operator ++(int)
|
random_access_iterator operator ++(int)
|
||||||
{
|
{
|
||||||
|
//std::cout << "operandom 1 ++\n";
|
||||||
random_access_iterator tmp(*this);
|
random_access_iterator tmp(*this);
|
||||||
++(*this);
|
++(*this);
|
||||||
return (tmp);
|
return (tmp);
|
||||||
@ -93,12 +95,14 @@ namespace ft
|
|||||||
|
|
||||||
random_access_iterator &operator --()
|
random_access_iterator &operator --()
|
||||||
{
|
{
|
||||||
|
//std::cout << "operandom --\n";
|
||||||
_ptr--;
|
_ptr--;
|
||||||
return (*this);
|
return (*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
random_access_iterator operator --(int)
|
random_access_iterator operator --(int)
|
||||||
{
|
{
|
||||||
|
//std::cout << "operandom 1 --\n";
|
||||||
random_access_iterator tmp(*this);
|
random_access_iterator tmp(*this);
|
||||||
--(*this);
|
--(*this);
|
||||||
return (tmp);
|
return (tmp);
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/11/19 05:14:31 by apommier #+# #+# */
|
/* Created: 2022/11/19 05:14:31 by apommier #+# #+# */
|
||||||
/* Updated: 2022/11/22 08:23:53 by apommier ### ########.fr */
|
/* Updated: 2022/11/22 11:41:22 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -40,45 +40,22 @@ namespace ft
|
|||||||
//---------------------------------------
|
//---------------------------------------
|
||||||
|
|
||||||
reverse_iterator() : _Ite() {}
|
reverse_iterator() : _Ite() {}
|
||||||
explicit reverse_iterator (iterator_type it) { _Ite = iterator_type(it); }
|
explicit reverse_iterator (iterator_type it) { _Ite = it; }
|
||||||
|
|
||||||
//reverse_iterator(const reverse_iterator<It> &rev_it) : _Ite(rev_it.base()) {}
|
|
||||||
|
|
||||||
template<typename It>
|
template<typename It>
|
||||||
reverse_iterator(const reverse_iterator<It> &rev_it)
|
reverse_iterator(const reverse_iterator<It> &rev_it)
|
||||||
{
|
{
|
||||||
*this = rev_it;
|
_Ite = rev_it.base();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~reverse_iterator(){}
|
virtual ~reverse_iterator(){}
|
||||||
// reverse_iterator(const reverse_iterator<It> &rev_it)
|
|
||||||
// {
|
|
||||||
// _Ite = It(rev_it.base());
|
|
||||||
// }
|
|
||||||
// operator reverse_iterator<Iter>() const
|
|
||||||
// {
|
|
||||||
// return (reverse_iterator< Iter const>(_Ite));
|
|
||||||
// }
|
|
||||||
|
|
||||||
template<typename It>
|
template<typename It>
|
||||||
reverse_iterator operator=(reverse_iterator<It> const &cpy)
|
reverse_iterator operator=(reverse_iterator<It> const &cpy)
|
||||||
{
|
{
|
||||||
_Ite = cpy.base();
|
_Ite = cpy.base();
|
||||||
return (*this);
|
return (*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------
|
|
||||||
//-------------COMPARAISON---------------
|
|
||||||
//---------------------------------------
|
|
||||||
|
|
||||||
// bool operator== (reverse_iterator const &rhs) const { return (_Ite == rhs.base()); }
|
|
||||||
// bool operator!= (reverse_iterator const &rhs) const { return (_Ite != rhs.base()); }
|
|
||||||
// bool operator< (reverse_iterator const &rhs) const { return (_Ite > rhs.base()); }
|
|
||||||
// bool operator<= (reverse_iterator const &rhs) const { return (_Ite >= rhs.base()); }
|
|
||||||
// bool operator> (reverse_iterator const &rhs) const { return (_Ite < rhs.base()); }
|
|
||||||
// bool operator>= (reverse_iterator const &rhs) const { return (_Ite <= rhs.base()); }
|
|
||||||
|
|
||||||
//---------------------------------------
|
//---------------------------------------
|
||||||
//-------------INCREMENTERS--------------
|
//-------------INCREMENTERS--------------
|
||||||
@ -86,49 +63,82 @@ namespace ft
|
|||||||
|
|
||||||
reverse_iterator& operator++()
|
reverse_iterator& operator++()
|
||||||
{
|
{
|
||||||
|
//std::cout << "ope0 ++\n";
|
||||||
--_Ite;
|
--_Ite;
|
||||||
return (*this);
|
return (*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
reverse_iterator operator++(int)
|
reverse_iterator operator++(int)
|
||||||
{
|
{
|
||||||
reverse_iterator tmp = *this;
|
//std::cout << "ope ++\n";
|
||||||
--_Ite;
|
reverse_iterator<Iter> tmp = *this;
|
||||||
|
_Ite--;
|
||||||
return (tmp);
|
return (tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
reverse_iterator& operator--()
|
reverse_iterator& operator--()
|
||||||
{
|
{
|
||||||
|
//std::cout << "ope0 --\n";
|
||||||
++_Ite;
|
++_Ite;
|
||||||
return (*this);
|
return (*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
reverse_iterator operator--(int)
|
reverse_iterator operator--(int)
|
||||||
{
|
{
|
||||||
reverse_iterator tmp = *this;
|
//std::cout << "ope --\n";
|
||||||
++_Ite;
|
reverse_iterator<Iter> tmp = *this;
|
||||||
|
_Ite++;
|
||||||
return (tmp);
|
return (tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// reverse_iterator& operator++() {
|
||||||
|
// --_Ite;
|
||||||
|
// return (*this);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// reverse_iterator operator++(int) {
|
||||||
|
// reverse_iterator<Iter> tmp = *this;
|
||||||
|
// _Ite--;
|
||||||
|
// return (tmp);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// reverse_iterator& operator--() {
|
||||||
|
// ++_Ite;
|
||||||
|
// return (*this);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// reverse_iterator operator--(int) {
|
||||||
|
// reverse_iterator<Iter> tmp = *this;
|
||||||
|
// _Ite++;
|
||||||
|
// return (tmp);
|
||||||
|
// }
|
||||||
|
|
||||||
//---------------------------------------
|
//---------------------------------------
|
||||||
//----------------ADRESS-----------------
|
//----------------ADRESS-----------------
|
||||||
//---------------------------------------
|
//---------------------------------------
|
||||||
|
|
||||||
reference operator *() { return (*_Ite); }
|
reference operator *()
|
||||||
const reference operator *() const { return (*_Ite); }
|
{
|
||||||
|
iterator_type tmp(_Ite);
|
||||||
|
tmp--;
|
||||||
|
return (*tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
const reference operator *() const
|
||||||
|
{
|
||||||
|
iterator_type tmp(_Ite);
|
||||||
|
tmp--;
|
||||||
|
return (*tmp);
|
||||||
|
}
|
||||||
|
|
||||||
pointer operator ->() { return (_Ite.getPointer()); }
|
pointer operator ->() { return (_Ite.getPointer()); }
|
||||||
const pointer operator ->() const { return (_Ite.getPointer()); }
|
const pointer operator ->() const { return (_Ite.getPointer()); }
|
||||||
reference operator [](difference_type nbr) const { return (*(_Ite + nbr)); }
|
reference operator [](difference_type nbr) const { return (*(_Ite - nbr - 1)); }
|
||||||
|
|
||||||
//---------------------------------------
|
//---------------------------------------
|
||||||
//--------------OPERATION----------------
|
//--------------OPERATION----------------
|
||||||
//---------------------------------------
|
//---------------------------------------
|
||||||
|
|
||||||
// reverse_iterator operator+ (difference_type n) const { return reverse_iterator<iterator_type>(_Ite - n); }
|
|
||||||
// reverse_iterator& operator+= (difference_type n) { return reverse_iterator<iterator_type>(_Ite -= n); }
|
|
||||||
// reverse_iterator operator- (difference_type n) const { return reverse_iterator<iterator_type>(_Ite + n); }
|
|
||||||
// reverse_iterator& operator-= (difference_type n) { return reverse_iterator<iterator_type>(_Ite += n); }
|
|
||||||
|
|
||||||
reverse_iterator operator+ (difference_type n) const { return reverse_iterator(_Ite - n); }
|
reverse_iterator operator+ (difference_type n) const { return reverse_iterator(_Ite - n); }
|
||||||
|
|
||||||
friend reverse_iterator operator +(difference_type lhs, reverse_iterator const& rhs) { return (rhs + lhs); } // n + a
|
friend reverse_iterator operator +(difference_type lhs, reverse_iterator const& rhs) { return (rhs + lhs); } // n + a
|
||||||
@ -141,52 +151,44 @@ namespace ft
|
|||||||
|
|
||||||
reverse_iterator operator- (difference_type n) const { return reverse_iterator(_Ite + n); }
|
reverse_iterator operator- (difference_type n) const { return reverse_iterator(_Ite + n); }
|
||||||
|
|
||||||
difference_type operator- (reverse_iterator const &lhs) const { return (_Ite - lhs._Ite); }
|
difference_type operator- (reverse_iterator const &lhs) const { return (lhs._Ite - _Ite); }
|
||||||
|
|
||||||
reverse_iterator& operator-= (difference_type n)
|
reverse_iterator& operator-= (difference_type n)
|
||||||
{
|
{
|
||||||
//std::cout << "its me\n";
|
|
||||||
_Ite += n;
|
_Ite += n;
|
||||||
return (*this);
|
return (*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// template <class Iterator>
|
|
||||||
// reverse_iterator<Iterator> operator+ (typename reverse_iterator<Iterator>::difference_type n, const reverse_iterator<Iterator>& rev_it)
|
|
||||||
// {
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
// template <class Iterator>
|
|
||||||
// typename reverse_iterator<Iterator>::difference_type operator- ( const reverse_iterator<Iterator>& lhs, const reverse_iterator<Iterator>& rhs)
|
|
||||||
// {
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
//---------------------------------
|
//---------------------------------
|
||||||
//--------------GET----------------
|
//--------------GET----------------
|
||||||
//---------------------------------
|
//---------------------------------
|
||||||
|
|
||||||
iterator_type base() const { return _Ite; }
|
iterator_type base() const { return /*iterator_type*/(_Ite); }
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class Ite1, class Ite2>
|
template<class Ite1, class Ite2>
|
||||||
bool operator== (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs) { return (lhs.base() == rhs.base()); }
|
bool operator== (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs)
|
||||||
|
{ return (lhs.base() == rhs.base()); }
|
||||||
|
|
||||||
template<class Ite1, class Ite2>
|
template<class Ite1, class Ite2>
|
||||||
bool operator!= (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs) { return (lhs.base() != rhs.base()); }
|
bool operator!= (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs)
|
||||||
|
{ return (lhs.base() != rhs.base()); }
|
||||||
|
|
||||||
template<class Ite1, class Ite2>
|
template<class Ite1, class Ite2>
|
||||||
bool operator< (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs) { return (lhs.base() > rhs.base()); }
|
bool operator< (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs)
|
||||||
|
{ return (lhs.base() > rhs.base()); }
|
||||||
|
|
||||||
template<class Ite1, class Ite2>
|
template<class Ite1, class Ite2>
|
||||||
bool operator<= (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs) { return (lhs.base() >= rhs.base()); }
|
bool operator<= (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs)
|
||||||
|
{ return (lhs.base() >= rhs.base()); }
|
||||||
|
|
||||||
template<class Ite1, class Ite2>
|
template<class Ite1, class Ite2>
|
||||||
bool operator> (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs) { return (lhs.base() < rhs.base()); }
|
bool operator> (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs)
|
||||||
|
{ return (lhs.base() < rhs.base()); }
|
||||||
|
|
||||||
template<class Ite1, class Ite2>
|
template<class Ite1, class Ite2>
|
||||||
bool operator>= (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs) { return (lhs.base() <= rhs.base()); }
|
bool operator>= (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs)
|
||||||
|
{ return (lhs.base() <= rhs.base()); }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/10/12 19:46:32 by apommier #+# #+# */
|
/* Created: 2022/10/12 19:46:32 by apommier #+# #+# */
|
||||||
/* Updated: 2022/11/22 07:46:32 by apommier ### ########.fr */
|
/* Updated: 2022/11/22 11:24:31 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -141,22 +141,22 @@ class vector
|
|||||||
|
|
||||||
reverse_iterator rbegin()
|
reverse_iterator rbegin()
|
||||||
{
|
{
|
||||||
return reverse_iterator(_tab);
|
return reverse_iterator(this->end());
|
||||||
}
|
}
|
||||||
|
|
||||||
const_reverse_iterator rbegin() const
|
const_reverse_iterator rbegin() const
|
||||||
{
|
{
|
||||||
return const_reverse_iterator(_tab);
|
return const_reverse_iterator(this->end());
|
||||||
}
|
}
|
||||||
|
|
||||||
reverse_iterator rend()
|
reverse_iterator rend()
|
||||||
{
|
{
|
||||||
return reverse_iterator(_tab + _size);
|
return reverse_iterator(this->begin());
|
||||||
}
|
}
|
||||||
|
|
||||||
const_reverse_iterator rend() const
|
const_reverse_iterator rend() const
|
||||||
{
|
{
|
||||||
return const_reverse_iterator(_tab + _size);
|
return const_reverse_iterator(this->begin());
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------
|
//------------------------
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user