update
This commit is contained in:
parent
1922da7816
commit
4a42ab9be1
@ -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/10/23 19:58:10 by apommier ### ########.fr */
|
/* Updated: 2022/10/26 19:39:20 by apommier ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -44,13 +44,19 @@ class vector
|
|||||||
_tab = 0
|
_tab = 0
|
||||||
_size = 0
|
_size = 0
|
||||||
_capacity = 0
|
_capacity = 0
|
||||||
|
_start = 0;
|
||||||
|
_end = 0;
|
||||||
|
_end_capacity = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
explicit vector (size_type n, const value_type& val = value_type(), const allocator_type& alloc = allocator_type()): _allocator(alloc) //fill constructor
|
explicit vector (size_type n, const value_type& val = value_type(), const allocator_type& alloc = allocator_type()): _allocator(alloc) //fill constructor
|
||||||
{
|
{
|
||||||
_tab =
|
_tab = 0
|
||||||
_size =
|
_size = 0
|
||||||
_capacity =
|
_capacity = 0
|
||||||
|
_start = 0;
|
||||||
|
_end = 0;
|
||||||
|
_end_capacity = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class InputIterator>
|
template <class InputIterator>
|
||||||
@ -61,7 +67,7 @@ class vector
|
|||||||
|
|
||||||
vector (const vector& x)//copy constructor
|
vector (const vector& x)//copy constructor
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
~vector()
|
~vector()
|
||||||
@ -81,13 +87,32 @@ class vector
|
|||||||
//-------------------------
|
//-------------------------
|
||||||
//--------Iterators--------
|
//--------Iterators--------
|
||||||
//-------------------------
|
//-------------------------
|
||||||
|
iterator begin()
|
||||||
|
{
|
||||||
|
return (_start);
|
||||||
|
}
|
||||||
|
|
||||||
|
iterator end()
|
||||||
|
{
|
||||||
|
return (_begin);
|
||||||
|
}
|
||||||
|
|
||||||
|
reverse_iterator rbegin()
|
||||||
|
{
|
||||||
|
return (_end);
|
||||||
|
}
|
||||||
|
|
||||||
|
reverse_iterator rend()
|
||||||
|
{
|
||||||
|
return (_start);
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------
|
//------------------------
|
||||||
//--------Capacity--------
|
//--------Capacity--------
|
||||||
//------------------------
|
//------------------------
|
||||||
size_type size() const
|
size_type size() const
|
||||||
{
|
{
|
||||||
return (_size);
|
return (_end - _start);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_type max_size() const
|
size_type max_size() const
|
||||||
@ -97,17 +122,28 @@ class vector
|
|||||||
|
|
||||||
void resize (size_type n, value_type val = value_type()) //Resizes the container so that it contains n elements.
|
void resize (size_type n, value_type val = value_type()) //Resizes the container so that it contains n elements.
|
||||||
{
|
{
|
||||||
|
if (n > this->max_size())
|
||||||
|
throw (std::length_error("vector::resize"));
|
||||||
|
else if (n < this->size())
|
||||||
|
{
|
||||||
|
while (n > this->size())
|
||||||
|
{
|
||||||
|
_end--;
|
||||||
|
_allocator.destroy(_end);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//else // n > size
|
||||||
|
//insert()
|
||||||
}
|
}
|
||||||
|
|
||||||
size_type capacity() const
|
size_type capacity() const
|
||||||
{
|
{
|
||||||
return (_capacity);
|
return (_end_capacity - _start);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool empty() const
|
bool empty() const
|
||||||
{
|
{
|
||||||
if (!_size)
|
if (!_end - _start)
|
||||||
return (1);
|
return (1);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
@ -144,32 +180,32 @@ class vector
|
|||||||
|
|
||||||
reference front()
|
reference front()
|
||||||
{
|
{
|
||||||
|
return (*_start);
|
||||||
}
|
}
|
||||||
|
|
||||||
const_reference front() const
|
const_reference front() const
|
||||||
{
|
{
|
||||||
|
return (*_start);
|
||||||
}
|
}
|
||||||
|
|
||||||
reference back()
|
reference back()
|
||||||
{
|
{
|
||||||
|
return (*_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
const_reference back() const
|
const_reference back() const
|
||||||
{
|
{
|
||||||
|
return (*_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
value_type* data()
|
value_type* data()
|
||||||
{
|
{
|
||||||
|
return (_tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
const value_type* data() const
|
const value_type* data() const
|
||||||
{
|
{
|
||||||
|
return (_tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------
|
//-------------------------
|
||||||
@ -193,7 +229,8 @@ class vector
|
|||||||
|
|
||||||
void pop_back()
|
void pop_back()
|
||||||
{
|
{
|
||||||
|
_allocator.destroy(_end - 1);
|
||||||
|
_end--;
|
||||||
}
|
}
|
||||||
|
|
||||||
iterator insert (iterator position, const value_type& val) //single element
|
iterator insert (iterator position, const value_type& val) //single element
|
||||||
@ -280,8 +317,12 @@ class vector
|
|||||||
|
|
||||||
value_type *_tab;
|
value_type *_tab;
|
||||||
size_type _size;
|
size_type _size;
|
||||||
size_type _capacity;
|
//size_type _capacity;
|
||||||
|
|
||||||
allocator_type _allocator;
|
allocator_type _allocator;
|
||||||
|
pointer _end;
|
||||||
|
pointer _start;
|
||||||
|
pointer _end_capacity;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user