reverse compil

This commit is contained in:
kinou-p 2022-11-22 08:24:36 +01:00
parent 9656f9e55a
commit f4c6e7db4b
4 changed files with 76 additions and 31 deletions

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/19 05:07:29 by apommier #+# #+# */ /* Created: 2022/11/19 05:07:29 by apommier #+# #+# */
/* Updated: 2022/11/19 05:09:05 by apommier ### ########.fr */ /* Updated: 2022/11/22 06:28:50 by apommier ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -18,10 +18,10 @@ namespace ft
struct iterator_traits { struct iterator_traits {
typedef typename Iterator::iterator_category iterator_category; typedef typename Iterator::iterator_category iterator_category;
typedef typename Iterator::value_type value_type; typedef typename Iterator::value_type value_type;
typedef typename Iterator::difference_type difference_type; typedef typename Iterator::difference_type difference_type;
typedef difference_type distance_type; typedef difference_type distance_type;
typedef typename Iterator::pointer pointer; typedef typename Iterator::pointer pointer;
typedef typename Iterator::reference reference; typedef typename Iterator::reference reference;
}; };
} }

View File

@ -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/21 15:54:44 by apommier ### ########.fr */ /* Updated: 2022/11/22 08:10:53 by apommier ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -40,20 +40,32 @@ namespace ft
random_access_iterator(){ _ptr = NULL;} random_access_iterator(){ _ptr = NULL;}
random_access_iterator(pointer ptr){ _ptr = ptr;} random_access_iterator(pointer ptr){ _ptr = ptr;}
random_access_iterator(random_access_iterator const &cpy) {*this = cpy;} random_access_iterator(const random_access_iterator &cpy) {*this = cpy;}
~random_access_iterator(){} ~random_access_iterator(){}
random_access_iterator &operator=(random_access_iterator const &cpy) // random_access_iterator &operator=(const random_access_iterator &cpy)
// {
// _ptr = cpy._ptr;
// return (*this);
// }
operator random_access_iterator<const value_type>() const
{ {
_ptr = cpy._ptr; return (random_access_iterator<const value_type>(_ptr));
}
random_access_iterator &operator=(random_access_iterator const &rhs)
{
if (this != &rhs)
{
this->_ptr = rhs._ptr;
}
return (*this); return (*this);
} }
operator random_access_iterator<value_type const>() const
{
return (random_access_iterator<value_type const>(_ptr));
}
// random_access_iterator &operator=(pointer &ptr) // random_access_iterator &operator=(pointer &ptr)
// { // {
// _ptr = ptr; // _ptr = ptr;

View File

@ -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 06:15:05 by apommier ### ########.fr */ /* Updated: 2022/11/22 08:23:53 by apommier ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -42,30 +42,43 @@ 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 = iterator_type(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)
{ {
_Ite = rev_it.base(); *this = rev_it;
}
reverse_iterator &operator=(reverse_iterator const &cpy)
{
_Ite = iterator_type(cpy._Ite);
return (*this);
} }
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>
reverse_iterator operator=(reverse_iterator<It> const &cpy)
{
_Ite = cpy.base();
return (*this);
}
//--------------------------------------- //---------------------------------------
//-------------COMPARAISON--------------- //-------------COMPARAISON---------------
//--------------------------------------- //---------------------------------------
bool operator== (reverse_iterator const &rhs) const { return (_Ite == rhs._Ite); } // bool operator== (reverse_iterator const &rhs) const { return (_Ite == rhs.base()); }
bool operator!= (reverse_iterator const &rhs) const { return (_Ite != rhs._Ite); } // bool operator!= (reverse_iterator const &rhs) const { return (_Ite != rhs.base()); }
bool operator< (reverse_iterator const &rhs) const { return (_Ite > rhs._Ite); } // bool operator< (reverse_iterator const &rhs) const { return (_Ite > rhs.base()); }
bool operator<= (reverse_iterator const &rhs) const { return (_Ite >= rhs._Ite); } // bool operator<= (reverse_iterator const &rhs) const { return (_Ite >= rhs.base()); }
bool operator> (reverse_iterator const &rhs) const { return (_Ite < rhs._Ite); } // bool operator> (reverse_iterator const &rhs) const { return (_Ite < rhs.base()); }
bool operator>= (reverse_iterator const &rhs) const { return (_Ite <= rhs._Ite); } // bool operator>= (reverse_iterator const &rhs) const { return (_Ite <= rhs.base()); }
//--------------------------------------- //---------------------------------------
//-------------INCREMENTERS-------------- //-------------INCREMENTERS--------------
@ -154,6 +167,26 @@ namespace ft
//--------------GET---------------- //--------------GET----------------
//--------------------------------- //---------------------------------
iterator_type base() const { return iterator_category(_Ite); } iterator_type base() const { return _Ite; }
}; };
template<class Ite1, class Ite2>
bool operator== (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs) { return (lhs.base() == rhs.base()); }
template<class Ite1, class Ite2>
bool operator!= (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs) { return (lhs.base() != rhs.base()); }
template<class Ite1, class Ite2>
bool operator< (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs) { return (lhs.base() > rhs.base()); }
template<class Ite1, class Ite2>
bool operator<= (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs) { return (lhs.base() >= rhs.base()); }
template<class Ite1, class Ite2>
bool operator> (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs) { return (lhs.base() < rhs.base()); }
template<class Ite1, class Ite2>
bool operator>= (const reverse_iterator<Ite1> &lhs, const reverse_iterator<Ite2> &rhs) { return (lhs.base() <= rhs.base()); }
} }

View File

@ -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/21 18:48:56 by apommier ### ########.fr */ /* Updated: 2022/11/22 07:46:32 by apommier ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -40,7 +40,7 @@ class vector
typedef T* pointer; typedef T* pointer;
typedef const T* const_pointer; typedef const T* const_pointer;
typedef ft::random_access_iterator<value_type> iterator; typedef ft::random_access_iterator<value_type> iterator;
typedef ft::random_access_iterator<const value_type> const_iterator; typedef ft::random_access_iterator< value_type const> const_iterator;
typedef ft::reverse_iterator<iterator> reverse_iterator; typedef ft::reverse_iterator<iterator> reverse_iterator;
typedef ft::reverse_iterator<const_iterator> const_reverse_iterator; typedef ft::reverse_iterator<const_iterator> const_reverse_iterator;
typedef std::ptrdiff_t difference_type; typedef std::ptrdiff_t difference_type;