iterator?
This commit is contained in:
parent
4a42ab9be1
commit
0cb13009c4
0
containers/iterators/enable_if.hpp
Normal file
0
containers/iterators/enable_if.hpp
Normal file
0
containers/iterators/equal.hpp
Normal file
0
containers/iterators/equal.hpp
Normal file
0
containers/iterators/is_integral.hpp
Normal file
0
containers/iterators/is_integral.hpp
Normal file
28
containers/iterators/iterator.hpp
Normal file
28
containers/iterators/iterator.hpp
Normal file
@ -0,0 +1,28 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* 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
containers/iterators/iterator_traits.hpp
Normal file
0
containers/iterators/iterator_traits.hpp
Normal file
0
containers/iterators/make_pair.hpp
Normal file
0
containers/iterators/make_pair.hpp
Normal file
0
containers/iterators/pair.hpp
Normal file
0
containers/iterators/pair.hpp
Normal file
77
containers/iterators/random_access_iterator.hpp
Normal file
77
containers/iterators/random_access_iterator.hpp
Normal file
@ -0,0 +1,77 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* random_access_iterator.hpp :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/10/30 16:14:35 by apommier #+# #+# */
|
||||
/* Updated: 2022/10/30 16:36:23 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef RANDOM_ACCESS_ITERATOR_HPP
|
||||
# define RANDOM_ACCESS_ITERATOR_HPP
|
||||
|
||||
namespace ft
|
||||
{
|
||||
template<typename T>
|
||||
class random_access_iterator
|
||||
{
|
||||
public:
|
||||
|
||||
//---------------------------------------
|
||||
//--------CONSTRUCTOR DESTRUCTOR---------
|
||||
//---------------------------------------
|
||||
random_access_iterator()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
random_access_iterator()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
random_access_iterator(random_access_iterator &cpy)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
~random_access_iterator()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
vectorIterator &operator=()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//---------------------------------------
|
||||
//-------------COMPARAISON---------------
|
||||
//---------------------------------------
|
||||
bool operator ==() {}
|
||||
bool operator !=() {}
|
||||
bool operator <() {}
|
||||
bool operator >() {}
|
||||
bool operator <=() {}
|
||||
bool operator >=() {}
|
||||
|
||||
//---------------------------------------
|
||||
//-------------INCREMENTERS--------------
|
||||
//---------------------------------------
|
||||
|
||||
random_access_iterator operator ++() {}
|
||||
random_access_iterator operator ++(int) {}
|
||||
random_access_iterator operator --() {}
|
||||
random_access_iterator operator --(int) {}
|
||||
|
||||
//---------------------------------------
|
||||
//-------------INCREMENTERS--------------
|
||||
//---------------------------------------
|
||||
|
||||
private:
|
||||
};
|
||||
}
|
||||
#endif
|
||||
0
containers/iterators/reverse_iterator.hpp
Normal file
0
containers/iterators/reverse_iterator.hpp
Normal file
43
containers/iterators/vector_iterators.hpp
Normal file
43
containers/iterators/vector_iterators.hpp
Normal file
@ -0,0 +1,43 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* 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:32 by apommier #+# #+# */
|
||||
/* Updated: 2022/10/26 19:39:20 by apommier ### ########.fr */
|
||||
/* Updated: 2022/10/28 17:58:43 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -27,10 +27,10 @@ class vector
|
||||
typedef Allocator allocator_type;
|
||||
typedef value_type& reference;
|
||||
typedef const value_type& const_reference;
|
||||
typedef typename Allocator::pointer pointer;
|
||||
typedef typename Allocator::const_pointer const_pointer;
|
||||
typedef value_type iterator;
|
||||
typedef value_type const_iterator;
|
||||
typedef typename Allocator::pointer pointer;
|
||||
typedef typename Allocator::const_pointer const_pointer;
|
||||
typedef value_type* iterator;
|
||||
typedef 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;
|
||||
@ -39,24 +39,33 @@ class vector
|
||||
//---------------------------------------
|
||||
//---------COPLIEN FORM FUNCTION---------
|
||||
//---------------------------------------
|
||||
explicit vector (const allocator_type& alloc = allocator_type()) : _allocator(alloc) //default constructor
|
||||
explicit vector (const allocator_type& alloc = allocator_type()) : _alloc(alloc) //default constructor
|
||||
{
|
||||
_tab = 0
|
||||
_size = 0
|
||||
_capacity = 0
|
||||
_tab = 0;
|
||||
_size = 0;
|
||||
_capacity = 0;
|
||||
_start = 0;
|
||||
_end = 0;
|
||||
_end_capacity = 0;
|
||||
_alloc = alloc;
|
||||
//_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()): _alloc(alloc) //fill constructor
|
||||
{
|
||||
_tab = 0
|
||||
_size = 0
|
||||
_capacity = 0
|
||||
_tab = 0;
|
||||
_size = 0;
|
||||
_capacity = 0;
|
||||
_start = 0;
|
||||
_end = 0;
|
||||
_end_capacity = 0;
|
||||
//_end_capacity = 0;
|
||||
|
||||
_alloc = alloc;
|
||||
_start = _alloc.allocate(n);
|
||||
_end = _start + n;
|
||||
_size = n;
|
||||
_capacity = n;
|
||||
while (n--)
|
||||
alloc.construct(val, _end - n);
|
||||
}
|
||||
|
||||
template <class InputIterator>
|
||||
@ -94,7 +103,7 @@ class vector
|
||||
|
||||
iterator end()
|
||||
{
|
||||
return (_begin);
|
||||
return (_end);
|
||||
}
|
||||
|
||||
reverse_iterator rbegin()
|
||||
@ -117,7 +126,7 @@ class vector
|
||||
|
||||
size_type max_size() const
|
||||
{
|
||||
return (_allocator.max_size());
|
||||
return (_alloc.max_size());
|
||||
}
|
||||
|
||||
void resize (size_type n, value_type val = value_type()) //Resizes the container so that it contains n elements.
|
||||
@ -129,7 +138,7 @@ class vector
|
||||
while (n > this->size())
|
||||
{
|
||||
_end--;
|
||||
_allocator.destroy(_end);
|
||||
_alloc.destroy(_end);
|
||||
}
|
||||
}
|
||||
//else // n > size
|
||||
@ -138,12 +147,12 @@ class vector
|
||||
|
||||
size_type capacity() const
|
||||
{
|
||||
return (_end_capacity - _start);
|
||||
return (_capacity);
|
||||
}
|
||||
|
||||
bool empty() const
|
||||
{
|
||||
if (!_end - _start)
|
||||
if (_end == _start)
|
||||
return (1);
|
||||
return(0);
|
||||
}
|
||||
@ -200,12 +209,12 @@ class vector
|
||||
|
||||
value_type* data()
|
||||
{
|
||||
return (_tab);
|
||||
return (_start);
|
||||
}
|
||||
|
||||
const value_type* data() const
|
||||
{
|
||||
return (_tab);
|
||||
return (_start);
|
||||
}
|
||||
|
||||
//-------------------------
|
||||
@ -219,23 +228,48 @@ class vector
|
||||
|
||||
void assign (size_type n, const value_type& val) //fill
|
||||
{
|
||||
|
||||
|
||||
this->clear();
|
||||
if (n > this->max_size())
|
||||
throw (std::length_error("vector::resize"));
|
||||
else if (n < this->size())
|
||||
{
|
||||
while (n > this->size())
|
||||
{
|
||||
_end--;
|
||||
_alloc.destroy(_end);
|
||||
}
|
||||
}
|
||||
//else // n > size
|
||||
//insert()
|
||||
}
|
||||
|
||||
void push_back (const value_type& val)
|
||||
{
|
||||
|
||||
if (!this->max_size() - _size)
|
||||
;
|
||||
//throw or alloc
|
||||
else
|
||||
{
|
||||
_alloc.construct(val, end);
|
||||
_size++;
|
||||
_end++;
|
||||
}
|
||||
}
|
||||
|
||||
void pop_back()
|
||||
{
|
||||
_allocator.destroy(_end - 1);
|
||||
//if (!_size)
|
||||
// ;
|
||||
//throw std::;
|
||||
_alloc.destroy(_end - 1);
|
||||
_end--;
|
||||
_size--;
|
||||
}
|
||||
|
||||
iterator insert (iterator position, const value_type& val) //single element
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
void insert (iterator position, size_type n, const value_type& val) //fill
|
||||
@ -249,27 +283,35 @@ class vector
|
||||
|
||||
}
|
||||
|
||||
iterator erase (iterator position);iterator erase (iterator first, iterator last)
|
||||
iterator erase (iterator position)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
iterator erase (iterator first, iterator last)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void swap (vector& x)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
void clear()
|
||||
{
|
||||
|
||||
int i = 0;
|
||||
|
||||
while (_start != _end)
|
||||
this->pop_back();
|
||||
}
|
||||
|
||||
//-------------------------
|
||||
//--------Allocator--------
|
||||
//-------------------------
|
||||
allocator_type get_allocator() const
|
||||
allocator_type get_alloc() const
|
||||
{
|
||||
return (_allocator);
|
||||
return (_alloc);
|
||||
}
|
||||
|
||||
//---------------------------------------------
|
||||
@ -317,12 +359,12 @@ class vector
|
||||
|
||||
value_type *_tab;
|
||||
size_type _size;
|
||||
//size_type _capacity;
|
||||
size_type _capacity;
|
||||
|
||||
allocator_type _allocator;
|
||||
allocator_type _alloc;
|
||||
pointer _end;
|
||||
pointer _start;
|
||||
pointer _end_capacity;
|
||||
//pointer _end_capacity;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/10/12 19:46:33 by apommier #+# #+# */
|
||||
/* Updated: 2022/10/19 17:22:39 by apommier ### ########.fr */
|
||||
/* Updated: 2022/10/28 17:39:13 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -22,4 +22,6 @@
|
||||
# include "./containers/vector.hpp"
|
||||
//}
|
||||
|
||||
# include <iterator>
|
||||
|
||||
#endif
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/10/19 14:04:37 by apommier #+# #+# */
|
||||
/* Updated: 2022/10/19 14:38:42 by apommier ### ########.fr */
|
||||
/* Updated: 2022/10/28 17:12:41 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -23,6 +23,14 @@ void stack_tester()
|
||||
|
||||
void vector_tester()
|
||||
{
|
||||
ft::vector<int> first;
|
||||
std::cout << "------empty------\n";
|
||||
std::cout << first.empty() << std::endl;
|
||||
std::cout << "------size------\n";
|
||||
std::cout << first.size() << std::endl;
|
||||
std::cout << "------pushback then size------\n";
|
||||
first.push_back(5);
|
||||
std::cout << first.size() << std::endl;
|
||||
}
|
||||
|
||||
int main()
|
||||
|
||||
BIN
tests/stack_test.o
Normal file
BIN
tests/stack_test.o
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user