correction vector
This commit is contained in:
parent
7a299887cf
commit
435dac1965
6
Makefile
6
Makefile
@ -6,14 +6,14 @@
|
||||
# By: apommier <apommier@student.42.fr> +#+ +:+ +#+ #
|
||||
# +#+#+#+#+#+ +#+ #
|
||||
# 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
|
||||
SRCS = tests/main.cpp
|
||||
|
||||
|
||||
INCLUDE = ./containers
|
||||
OBJS = ${SRCS:.cpp=.o}
|
||||
CC = c++
|
||||
CFLAGS = -g -Wall -Wextra -Werror -std=c++98
|
||||
@ -23,7 +23,7 @@ RM = rm -rf
|
||||
$(CC) ${CFLAGS} -c $< -o $(<:.cpp=.o)
|
||||
|
||||
${NAME}: ${OBJS}
|
||||
${CC} ${LIB} ${OBJS} -o ${NAME}
|
||||
${CC} ${LIB} ${OBJS} ${INCLUDE} -o ${NAME}
|
||||
|
||||
all: ${NAME}
|
||||
|
||||
|
||||
@ -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;
|
||||
};
|
||||
}
|
||||
@ -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; };
|
||||
}
|
||||
@ -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
|
||||
@ -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;
|
||||
};
|
||||
}
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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);
|
||||
}
|
||||
|
||||
operator random_access_iterator<value_type const>() const
|
||||
{
|
||||
return (random_access_iterator<value_type const>(_ptr));
|
||||
}
|
||||
// random_access_iterator &operator=(pointer &ptr)
|
||||
// {
|
||||
// _ptr = ptr;
|
||||
@ -100,9 +104,12 @@ namespace ft
|
||||
//----------------ADRESS-----------------
|
||||
//---------------------------------------
|
||||
|
||||
value_type operator *() { return (*_ptr); }
|
||||
reference operator *() { return (*_ptr); }
|
||||
reference operator *() const { 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----------------
|
||||
@ -111,7 +118,7 @@ namespace ft
|
||||
// addition | soustraction
|
||||
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
|
||||
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
|
||||
//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?
|
||||
|
||||
@ -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----------------
|
||||
//---------------------------------
|
||||
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
@ -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
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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 */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -52,26 +52,37 @@ class map
|
||||
private :
|
||||
|
||||
pointer _start;
|
||||
pointer _end;
|
||||
size_type _size;
|
||||
size_type _capacity;
|
||||
allocator_type _alloc;
|
||||
|
||||
public :
|
||||
|
||||
//---------------------------------------
|
||||
//---------COPLIEN FORM FUNCTION---------
|
||||
//---------------------------------------
|
||||
map();
|
||||
map()
|
||||
{
|
||||
_start = 0;
|
||||
_end = 0;
|
||||
_size = 0;
|
||||
_capacity = 0;
|
||||
_alloc = 0;
|
||||
|
||||
}
|
||||
|
||||
explicit map( const Compare& comp, const Allocator& alloc = Allocator() )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
template< class InputIt >
|
||||
map( InputIt first, InputIt last, const Compare& comp = Compare(), const Allocator& alloc = Allocator() )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
map( const map& x)
|
||||
{
|
||||
|
||||
@ -82,13 +93,11 @@ class map
|
||||
|
||||
}
|
||||
|
||||
|
||||
map& operator=( const map& x )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------
|
||||
//---------MEMBER FUNCTION----------
|
||||
//----------------------------------
|
||||
@ -218,7 +227,6 @@ class map
|
||||
|
||||
}
|
||||
|
||||
|
||||
//-------------------------
|
||||
//--------Observers--------
|
||||
//-------------------------
|
||||
@ -282,7 +290,6 @@ class map
|
||||
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* 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
|
||||
|
||||
# include "./iterators/random_access_iterator.hpp"
|
||||
# include "./iterators/enable_if.hpp"
|
||||
# include "./iterators/is_integral.hpp"
|
||||
|
||||
# include <cstddef>
|
||||
# include <memory>
|
||||
@ -37,7 +39,7 @@ class vector
|
||||
typedef T* pointer;
|
||||
typedef const T* const_pointer;
|
||||
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<const_iterator> const_reverse_iterator;
|
||||
typedef std::ptrdiff_t difference_type;
|
||||
@ -49,7 +51,7 @@ class vector
|
||||
//-----------------------------
|
||||
private:
|
||||
|
||||
value_type *_tab;
|
||||
pointer _tab;
|
||||
size_type _size;
|
||||
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
|
||||
{
|
||||
_tab = 0;
|
||||
_size = 0;
|
||||
_capacity = 0;
|
||||
|
||||
_alloc = alloc;
|
||||
_tab = _alloc.allocate(n);
|
||||
_size = n;
|
||||
_capacity = n;
|
||||
@ -93,16 +90,18 @@ class vector
|
||||
|
||||
~vector()
|
||||
{
|
||||
if (_tab && _capacity)
|
||||
if (_capacity)
|
||||
_alloc.deallocate(_tab, _capacity);
|
||||
}
|
||||
|
||||
vector& operator= (const vector& x)//assignation operator
|
||||
{
|
||||
_tab = x._tab;
|
||||
_size = x._size;
|
||||
_capacity = x._capacity;
|
||||
_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);
|
||||
}
|
||||
|
||||
@ -115,17 +114,32 @@ class vector
|
||||
//-------------------------
|
||||
iterator begin()
|
||||
{
|
||||
return (_tab);
|
||||
return (iterator(_tab));
|
||||
}
|
||||
|
||||
const_iterator begin() const
|
||||
{
|
||||
return const_iterator(_tab);
|
||||
}
|
||||
|
||||
iterator end()
|
||||
{
|
||||
return (_tab + _size);
|
||||
return iterator(_tab + _size);
|
||||
}
|
||||
|
||||
const_iterator end() const
|
||||
{
|
||||
return const_iterator(_tab + _size);
|
||||
}
|
||||
|
||||
reverse_iterator rbegin()
|
||||
{
|
||||
return (_tab + _size);
|
||||
return iterator(_tab + _size);
|
||||
}
|
||||
|
||||
const_reverse_iterator rbegin() const
|
||||
{
|
||||
return iterator(_tab + _size);
|
||||
}
|
||||
|
||||
reverse_iterator rend()
|
||||
@ -133,6 +147,11 @@ class vector
|
||||
return (_tab);
|
||||
}
|
||||
|
||||
const_reverse_iterator rend() const
|
||||
{
|
||||
return (_tab);
|
||||
}
|
||||
|
||||
//------------------------
|
||||
//--------Capacity--------
|
||||
//------------------------
|
||||
@ -164,9 +183,10 @@ class vector
|
||||
while (n > _size)
|
||||
{
|
||||
_alloc.construct(_tab + _size, val);
|
||||
_size++;
|
||||
//_end++;
|
||||
}
|
||||
_size = n;
|
||||
//_size = n;
|
||||
}
|
||||
}
|
||||
|
||||
@ -214,13 +234,17 @@ class vector
|
||||
reference at (size_type n)
|
||||
{
|
||||
//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
|
||||
{
|
||||
//exception
|
||||
return (_tab[n]);
|
||||
if (n >= _size)
|
||||
throw (std::out_of_range("ft::vector::at"));
|
||||
return (*(_tab + n));
|
||||
}
|
||||
|
||||
reference front()
|
||||
@ -235,12 +259,12 @@ class vector
|
||||
|
||||
reference back()
|
||||
{
|
||||
return (*(_tab + _size));
|
||||
return (*(_tab + _size - 1));
|
||||
}
|
||||
|
||||
const_reference back() const
|
||||
{
|
||||
return (*(_tab + _size));
|
||||
return (*(_tab + _size - 1));
|
||||
}
|
||||
|
||||
value_type* data()
|
||||
@ -256,8 +280,10 @@ class vector
|
||||
//-------------------------
|
||||
//--------Modifiers--------
|
||||
//-------------------------
|
||||
|
||||
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();
|
||||
while (first < last)
|
||||
@ -277,12 +303,13 @@ class vector
|
||||
_alloc.construct(_tab + n, val);
|
||||
}
|
||||
|
||||
void push_back (const value_type& val)
|
||||
void push_back (const_reference val)
|
||||
{
|
||||
if (!_capacity)
|
||||
this->reserve(1);
|
||||
else if (_size == _capacity)
|
||||
this->reserve(_size);
|
||||
this->reserve(_size * 2);
|
||||
//std::cout << "coucou1\n";
|
||||
_alloc.construct(_tab + _size, val);
|
||||
_size++;
|
||||
}
|
||||
@ -299,6 +326,7 @@ class vector
|
||||
iterator insert (iterator position, const value_type& val) //single element
|
||||
{
|
||||
this->insert(position, 1, val);
|
||||
return (position);
|
||||
}
|
||||
|
||||
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())
|
||||
throw (std::length_error("vector::resize"));
|
||||
tmp = _alloc.allocate(_size + (last - first));
|
||||
for (i = 0; i < position; i++)
|
||||
for (i = 0; i < position - _tab; i++)
|
||||
tmp[i] = _tab[i];
|
||||
while (first + j != last)
|
||||
{
|
||||
tmp[i + j] = *(first + j);
|
||||
tmp[i + j] = *(j + first);
|
||||
j++;
|
||||
}
|
||||
while (_size - i)
|
||||
@ -352,31 +380,42 @@ class vector
|
||||
|
||||
iterator erase (iterator position)
|
||||
{
|
||||
iterator ret = position;
|
||||
_alloc.destroy(position);
|
||||
while (_tab + _size - 1 > position + _tab)
|
||||
_alloc.destroy(&(*position));
|
||||
// while (_tab + _size - 1 > _tab + (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);
|
||||
position++;
|
||||
_alloc.destroy(position);
|
||||
_alloc.construct(&(*(position + i)), *(position + i + 1));
|
||||
_alloc.destroy(&(*(position + i + 1)));
|
||||
}
|
||||
_size--;
|
||||
return (ret + 1);
|
||||
return (position);
|
||||
}
|
||||
|
||||
iterator erase (iterator first, iterator last)
|
||||
{
|
||||
difference_type lenght = last - first;
|
||||
//std::cout << "diff = " << lenght << std::endl;
|
||||
|
||||
for (int i = 0; lenght - i; i++)
|
||||
_alloc.destroy(first + i);
|
||||
while (_tab + _size - 1 != _tab + lenght)
|
||||
int i;
|
||||
for (i = 0; lenght - i - 1; i++)
|
||||
_alloc.destroy(&(*(first + i)));
|
||||
for (i = 0; _size - i - 1; i++)
|
||||
{
|
||||
*first = *(first + lenght);
|
||||
first++;
|
||||
_alloc.destroy(first + lenght);
|
||||
_alloc.construct(&(*(first + i)), *(first + lenght + i));
|
||||
_alloc.destroy(&(*(first + lenght + i )));
|
||||
}
|
||||
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)
|
||||
|
||||
@ -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;
|
||||
// }
|
||||
Loading…
Reference in New Issue
Block a user