correction vector

This commit is contained in:
kinou-p 2022-11-20 03:00:39 +01:00
parent 7a299887cf
commit 435dac1965
11 changed files with 297 additions and 167 deletions

View File

@ -6,14 +6,14 @@
# By: apommier <apommier@student.42.fr> +#+ +:+ +#+ # # By: apommier <apommier@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ # # +#+#+#+#+#+ +#+ #
# Created: 2022/10/12 19:45:18 by apommier #+# #+# # # Created: 2022/10/12 19:45:18 by apommier #+# #+# #
# Updated: 2022/11/16 21:54:17 by apommier ### ########.fr # # Updated: 2022/11/19 01:32:23 by apommier ### ########.fr #
# # # #
# **************************************************************************** # # **************************************************************************** #
NAME = a.out NAME = a.out
SRCS = tests/main.cpp SRCS = tests/main.cpp
INCLUDE = ./containers
OBJS = ${SRCS:.cpp=.o} OBJS = ${SRCS:.cpp=.o}
CC = c++ CC = c++
CFLAGS = -g -Wall -Wextra -Werror -std=c++98 CFLAGS = -g -Wall -Wextra -Werror -std=c++98
@ -23,7 +23,7 @@ RM = rm -rf
$(CC) ${CFLAGS} -c $< -o $(<:.cpp=.o) $(CC) ${CFLAGS} -c $< -o $(<:.cpp=.o)
${NAME}: ${OBJS} ${NAME}: ${OBJS}
${CC} ${LIB} ${OBJS} -o ${NAME} ${CC} ${LIB} ${OBJS} ${INCLUDE} -o ${NAME}
all: ${NAME} all: ${NAME}

View File

@ -0,0 +1,24 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* enable_if.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/19 05:59:46 by apommier #+# #+# */
/* Updated: 2022/11/19 10:55:47 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
#pragma once
namespace ft
{
template < bool B, class T = void >
struct enable_if {};
template < class T >
struct enable_if< true, T > {
typedef T type;
};
}

View File

@ -0,0 +1,31 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* is_integral.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/19 10:55:07 by apommier #+# #+# */
/* Updated: 2022/11/19 10:55:51 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
#pragma once
namespace ft
{
template <class T> struct is_integral { static const bool value = false; };
template <> struct is_integral<bool> { static const bool value = true; };
template <> struct is_integral<char> { static const bool value = true; };
template <> struct is_integral<signed char> { static const bool value = true; };
template <> struct is_integral<unsigned char> { static const bool value = true; };
template <> struct is_integral<wchar_t> { static const bool value = true; };
template <> struct is_integral<short> { static const bool value = true; };
template <> struct is_integral<int> { static const bool value = true; };
template <> struct is_integral<long> { static const bool value = true; };
template <> struct is_integral<long long> { static const bool value = true; };
template <> struct is_integral<unsigned short> { static const bool value = true; };
template <> struct is_integral<unsigned int> { static const bool value = true; };
template <> struct is_integral<unsigned long> { static const bool value = true; };
template <> struct is_integral<unsigned long long> { static const bool value = true; };
}

View File

@ -1,28 +0,0 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* iterator.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/29 16:59:53 by apommier #+# #+# */
/* Updated: 2022/10/29 17:04:13 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef ITERATOR_HPP
# define ITERATOR_HPP
template <class Iterator> class iterator_traits;template <class T> class iterator_traits<T*>;template <class T> class iterator_traits<const T*>
template <class Category, class T, class Distance = ptrdiff_t, class Pointer = T*, class Reference = T&>
class iterator
{
typedef T value_type;
typedef Distance difference_type;
typedef Pointer pointer;
typedef Reference reference;
typedef Category iterator_category;
};
#endif

View File

@ -0,0 +1,27 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* iterator_traits.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/19 05:07:29 by apommier #+# #+# */
/* Updated: 2022/11/19 05:09:05 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
#pragma once
namespace ft
{
template<typename Iterator>
struct iterator_traits {
typedef typename Iterator::iterator_category iterator_category;
typedef typename Iterator::value_type value_type;
typedef typename Iterator::difference_type difference_type;
typedef difference_type distance_type;
typedef typename Iterator::pointer pointer;
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/16 19:21:41 by apommier ### ########.fr */ /* Updated: 2022/11/19 12:42:38 by apommier ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -49,6 +49,10 @@ namespace ft
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;
@ -100,9 +104,12 @@ namespace ft
//----------------ADRESS----------------- //----------------ADRESS-----------------
//--------------------------------------- //---------------------------------------
value_type operator *() { return (*_ptr); } reference operator *() { return (*_ptr); }
reference operator *() const { return (*_ptr); }
pointer operator ->() { return (_ptr); } pointer operator ->() { return (_ptr); }
value_type operator [](difference_type nbr) { return (*(_ptr + nbr)); } pointer operator ->() const { return (_ptr); }
// reference operator [](difference_type nbr) { return (*(_ptr + nbr)); } const
reference operator [](difference_type nbr) const { return (*(_ptr + nbr)); }
//--------------------------------------- //---------------------------------------
//--------------OPERATION---------------- //--------------OPERATION----------------
@ -111,7 +118,7 @@ namespace ft
// addition | soustraction // addition | soustraction
random_access_iterator operator +(difference_type const nbr) const { return (random_access_iterator(_ptr + nbr)); } // a + n random_access_iterator operator +(difference_type const nbr) const { return (random_access_iterator(_ptr + nbr)); } // a + n
friend random_access_iterator operator +(int const lhs, random_access_iterator const& rhs) { return (rhs + lhs); } // n + a friend random_access_iterator operator +(int const lhs, random_access_iterator const& rhs) { return (rhs + lhs); } // n + a
random_access_iterator &operator -(difference_type nbr) { return random_access_iterator(_ptr - nbr); } // a - n random_access_iterator operator -(difference_type nbr) { return random_access_iterator(_ptr - nbr); } // a - n
difference_type operator -(random_access_iterator const &rhs) const { return (_ptr - rhs._ptr) ; } // a - b difference_type operator -(random_access_iterator const &rhs) const { return (_ptr - rhs._ptr) ; } // a - b
//friend difference_type &operator -(random_access_iterator const& lhs, random_access_iterator const& rhs) { return ((difference_type)(lhs._ptr - rhs._ptr)); } // a - b //friend difference_type &operator -(random_access_iterator const& lhs, random_access_iterator const& rhs) { return ((difference_type)(lhs._ptr - rhs._ptr)); } // a - b
//random_access_iterator operator -(const random_access_iterator &b) { return random_access_iterator(_ptr + b); } // a - b 2? //random_access_iterator operator -(const random_access_iterator &b) { return random_access_iterator(_ptr + b); } // a - b 2?

View File

@ -0,0 +1,83 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* reverse_iterator.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/11/19 05:14:31 by apommier #+# #+# */
/* Updated: 2022/11/19 05:49:52 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef REVERSE_ITERATOR_HPP
# define REVERSE_ITERATOR_HPP
# include <cstddef>
namespace ft
{
template<typename Iter>
class reverse_iterator
{
public:
typedef Iter iterator_type;
typedef typename ft::iterator_traits<Iter>::iterator_category iterator_category;
typedef typename ft::iterator_traits<Iter>::value_type value_type;
typedef typename ft::iterator_traits<Iter>::difference_type difference_type;
typedef typename ft::iterator_traits<Iter>::pointer pointer;
typedef typename ft::iterator_traits<Iter>::reference reference;
private:
Iter _Ite;
public:
//---------------------------------------
//--------CONSTRUCTOR DESTRUCTOR---------
//---------------------------------------
reverse_iterator(){}
reverse_iterator(pointer Ite){}
reverse_iterator(reverse_iterator const &cpy) {}
~reverse_iterator(){}
reverse_iterator &operator=(reverse_iterator const &cpy)
{
_Ite = cpy._Ite;
return (*this);
}
//---------------------------------------
//-------------COMPARAISON---------------
//---------------------------------------
//---------------------------------------
//-------------INCREMENTERS--------------
//---------------------------------------
//---------------------------------------
//----------------ADRESS-----------------
//---------------------------------------
reference operator *() { return (*_Ite); }
const reference operator *() const { return (*_Ite); }
pointer operator ->() { return (_Ite); }
const pointer operator ->() const { return (_Ite); }
reference operator [](difference_type nbr) const { return (*(_Ite + nbr)); }
//---------------------------------------
//--------------OPERATION----------------
//---------------------------------------
//---------------------------------
//--------------GET----------------
//---------------------------------
};
}

View File

@ -1,43 +0,0 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* vector_iterators.hpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/30 16:03:53 by apommier #+# #+# */
/* Updated: 2022/10/30 16:12:03 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef VECTOR_ITERATORS_HPP
# define VECTOR_ITERATORS_HPP
namespace ft
{
template <typename T>
class random_access_iterator
{
public :
random_access_iterator()
{
}
random_access_iterator(random_access_iterator cpy)
{
}
~random_access_iterator()
{
}
private :
};
}
#endif

View File

@ -6,7 +6,7 @@
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */ /* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/12 19:46:25 by apommier #+# #+# */ /* Created: 2022/10/12 19:46:25 by apommier #+# #+# */
/* Updated: 2022/11/17 07:41:22 by apommier ### ########.fr */ /* Updated: 2022/11/18 11:58:52 by apommier ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -30,19 +30,19 @@ class map
//---------MEMBER TYPE--------- //---------MEMBER TYPE---------
//----------------------------- //-----------------------------
typedef Key key_type; typedef Key key_type;
typedef T mapped_type; typedef T mapped_type;
typedef std::pair<const Key, T> value_type; typedef std::pair<const Key, T> value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
typedef std::ptrdiff_t difference_type; typedef std::ptrdiff_t difference_type;
typedef Compare key_compare; typedef Compare key_compare;
typedef Allocator allocator_type; typedef Allocator allocator_type;
typedef value_type& reference; typedef value_type& reference;
typedef const value_type& const_reference; typedef const value_type& const_reference;
typedef Allocator::pointer pointer; typedef Allocator::pointer pointer;
typedef Allocator::const_pointer const_pointer; typedef Allocator::const_pointer const_pointer;
typedef LegacyBidirectionalIterator iterator; typedef LegacyBidirectionalIterator iterator;
typedef LegacyBidirectionalIterator const_iterator; typedef LegacyBidirectionalIterator const_iterator;
typedef std::reverse_iterator<iterator> reverse_iterator; typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator; typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
@ -51,27 +51,38 @@ class map
//----------------------------- //-----------------------------
private : private :
pointer _start; pointer _start;
pointer _end;
size_type _size;
size_type _capacity;
allocator_type _alloc;
public : public :
//--------------------------------------- //---------------------------------------
//---------COPLIEN FORM FUNCTION--------- //---------COPLIEN FORM FUNCTION---------
//--------------------------------------- //---------------------------------------
map(); map()
{
_start = 0;
_end = 0;
_size = 0;
_capacity = 0;
_alloc = 0;
}
explicit map( const Compare& comp, const Allocator& alloc = Allocator() ) explicit map( const Compare& comp, const Allocator& alloc = Allocator() )
{ {
} }
template< class InputIt > template< class InputIt >
map( InputIt first, InputIt last, const Compare& comp = Compare(), const Allocator& alloc = Allocator() ) map( InputIt first, InputIt last, const Compare& comp = Compare(), const Allocator& alloc = Allocator() )
{ {
} }
map( const map& x) map( const map& x)
{ {
@ -82,13 +93,11 @@ class map
} }
map& operator=( const map& x ) map& operator=( const map& x )
{ {
} }
//---------------------------------- //----------------------------------
//---------MEMBER FUNCTION---------- //---------MEMBER FUNCTION----------
//---------------------------------- //----------------------------------
@ -218,7 +227,6 @@ class map
} }
//------------------------- //-------------------------
//--------Observers-------- //--------Observers--------
//------------------------- //-------------------------
@ -282,7 +290,6 @@ class map
} }
}; };
} }

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/17 06:53:12 by apommier ### ########.fr */ /* Updated: 2022/11/20 02:57:45 by apommier ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -14,6 +14,8 @@
# define VECTOR_HPP # define VECTOR_HPP
# include "./iterators/random_access_iterator.hpp" # include "./iterators/random_access_iterator.hpp"
# include "./iterators/enable_if.hpp"
# include "./iterators/is_integral.hpp"
# include <cstddef> # include <cstddef>
# include <memory> # include <memory>
@ -37,7 +39,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 const ft::random_access_iterator<value_type> const_iterator; typedef ft::random_access_iterator<const value_type> const_iterator;
typedef std::reverse_iterator<iterator> reverse_iterator; typedef std::reverse_iterator<iterator> reverse_iterator;
typedef std::reverse_iterator<const_iterator> const_reverse_iterator; typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
typedef std::ptrdiff_t difference_type; typedef std::ptrdiff_t difference_type;
@ -49,7 +51,7 @@ class vector
//----------------------------- //-----------------------------
private: private:
value_type *_tab; pointer _tab;
size_type _size; size_type _size;
size_type _capacity; size_type _capacity;
@ -74,11 +76,6 @@ class vector
explicit vector (size_type n, const value_type& val = value_type(), const allocator_type& alloc = allocator_type()): _alloc(alloc) //fill constructor explicit vector (size_type n, const value_type& val = value_type(), const allocator_type& alloc = allocator_type()): _alloc(alloc) //fill constructor
{ {
_tab = 0;
_size = 0;
_capacity = 0;
_alloc = alloc;
_tab = _alloc.allocate(n); _tab = _alloc.allocate(n);
_size = n; _size = n;
_capacity = n; _capacity = n;
@ -93,16 +90,18 @@ class vector
~vector() ~vector()
{ {
if (_tab && _capacity) if (_capacity)
_alloc.deallocate(_tab, _capacity); _alloc.deallocate(_tab, _capacity);
} }
vector& operator= (const vector& x)//assignation operator vector& operator= (const vector& x)//assignation operator
{ {
_tab = x._tab;
_size = x._size;
_capacity = x._capacity;
_alloc = x._alloc; _alloc = x._alloc;
_size = x._size;
_capacity = x._size;
_tab = _alloc.allocate(_size);
for (size_type i = 0; i < _size; i++)
_alloc.construct(_tab + i, x._tab[i]);
return (*this); return (*this);
} }
@ -115,17 +114,32 @@ class vector
//------------------------- //-------------------------
iterator begin() iterator begin()
{ {
return (_tab); return (iterator(_tab));
}
const_iterator begin() const
{
return const_iterator(_tab);
} }
iterator end() iterator end()
{ {
return (_tab + _size); return iterator(_tab + _size);
}
const_iterator end() const
{
return const_iterator(_tab + _size);
} }
reverse_iterator rbegin() reverse_iterator rbegin()
{ {
return (_tab + _size); return iterator(_tab + _size);
}
const_reverse_iterator rbegin() const
{
return iterator(_tab + _size);
} }
reverse_iterator rend() reverse_iterator rend()
@ -133,6 +147,11 @@ class vector
return (_tab); return (_tab);
} }
const_reverse_iterator rend() const
{
return (_tab);
}
//------------------------ //------------------------
//--------Capacity-------- //--------Capacity--------
//------------------------ //------------------------
@ -164,9 +183,10 @@ class vector
while (n > _size) while (n > _size)
{ {
_alloc.construct(_tab + _size, val); _alloc.construct(_tab + _size, val);
_size++;
//_end++; //_end++;
} }
_size = n; //_size = n;
} }
} }
@ -214,13 +234,17 @@ class vector
reference at (size_type n) reference at (size_type n)
{ {
//exception //exception
return (_tab[n]); if (n >= _size)
throw (std::out_of_range("ft::vector::at"));
return (*(_tab + n));
} }
const_reference at (size_type n) const const_reference at (size_type n) const
{ {
//exception //exception
return (_tab[n]); if (n >= _size)
throw (std::out_of_range("ft::vector::at"));
return (*(_tab + n));
} }
reference front() reference front()
@ -235,12 +259,12 @@ class vector
reference back() reference back()
{ {
return (*(_tab + _size)); return (*(_tab + _size - 1));
} }
const_reference back() const const_reference back() const
{ {
return (*(_tab + _size)); return (*(_tab + _size - 1));
} }
value_type* data() value_type* data()
@ -256,8 +280,10 @@ class vector
//------------------------- //-------------------------
//--------Modifiers-------- //--------Modifiers--------
//------------------------- //-------------------------
template <class InputIterator> template <class InputIterator>
void assign (InputIterator first, InputIterator last) //range //void assign (InputIterator first, InputIterator last) //range
void assign (InputIterator first, InputIterator last, typename ft::enable_if<!ft::is_integral<InputIterator>::value, InputIterator>::type* = 0)
{ {
this->clear(); this->clear();
while (first < last) while (first < last)
@ -277,12 +303,13 @@ class vector
_alloc.construct(_tab + n, val); _alloc.construct(_tab + n, val);
} }
void push_back (const value_type& val) void push_back (const_reference val)
{ {
if (!_capacity) if (!_capacity)
this->reserve(1); this->reserve(1);
else if (_size == _capacity) else if (_size == _capacity)
this->reserve(_size); this->reserve(_size * 2);
//std::cout << "coucou1\n";
_alloc.construct(_tab + _size, val); _alloc.construct(_tab + _size, val);
_size++; _size++;
} }
@ -299,6 +326,7 @@ class vector
iterator insert (iterator position, const value_type& val) //single element iterator insert (iterator position, const value_type& val) //single element
{ {
this->insert(position, 1, val); this->insert(position, 1, val);
return (position);
} }
void insert (iterator position, size_type n, const value_type& val) //fill void insert (iterator position, size_type n, const value_type& val) //fill
@ -335,11 +363,11 @@ class vector
if (_size + (last - first) > this->max_size()) if (_size + (last - first) > this->max_size())
throw (std::length_error("vector::resize")); throw (std::length_error("vector::resize"));
tmp = _alloc.allocate(_size + (last - first)); tmp = _alloc.allocate(_size + (last - first));
for (i = 0; i < position; i++) for (i = 0; i < position - _tab; i++)
tmp[i] = _tab[i]; tmp[i] = _tab[i];
while (first + j != last) while (first + j != last)
{ {
tmp[i + j] = *(first + j); tmp[i + j] = *(j + first);
j++; j++;
} }
while (_size - i) while (_size - i)
@ -352,31 +380,42 @@ class vector
iterator erase (iterator position) iterator erase (iterator position)
{ {
iterator ret = position; _alloc.destroy(&(*position));
_alloc.destroy(position); // while (_tab + _size - 1 > _tab + (position - _tab))
while (_tab + _size - 1 > position + _tab) // {
// *position = *(position + 1);
// position++;
// _alloc.destroy(&(*position));
// }
for (size_type i = 0; _tab + _size - 1 > _tab + (position - _tab + i); i++)
{ {
*position = *(position + 1); _alloc.construct(&(*(position + i)), *(position + i + 1));
position++; _alloc.destroy(&(*(position + i + 1)));
_alloc.destroy(position);
} }
_size--; _size--;
return (ret + 1); return (position);
} }
iterator erase (iterator first, iterator last) iterator erase (iterator first, iterator last)
{ {
difference_type lenght = last - first; difference_type lenght = last - first;
//std::cout << "diff = " << lenght << std::endl;
for (int i = 0; lenght - i; i++) int i;
_alloc.destroy(first + i); for (i = 0; lenght - i - 1; i++)
while (_tab + _size - 1 != _tab + lenght) _alloc.destroy(&(*(first + i)));
for (i = 0; _size - i - 1; i++)
{ {
*first = *(first + lenght); _alloc.construct(&(*(first + i)), *(first + lenght + i));
first++; _alloc.destroy(&(*(first + lenght + i )));
_alloc.destroy(first + lenght);
} }
return (last + 1); // for (; _size - lenght - i; i++)
// {
// _alloc.construct(&(*(first + i)), *(first + lenght + i));
// _alloc.destroy(&(*(first + _size - lenght + i )));
// }
_size -= lenght;
return (first);
} }
void swap (vector& x) void swap (vector& x)

View File

@ -1,17 +0,0 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* stack_test.cpp :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/19 14:04:13 by apommier #+# #+# */
/* Updated: 2022/10/19 14:29:06 by apommier ### ########.fr */
/* */
/* ************************************************************************** */
// void tester()
// {
// //ft::stack first()
// return;
// }