vector finish
This commit is contained in:
@@ -4,6 +4,8 @@
|
||||
|
||||
namespace ft {
|
||||
|
||||
|
||||
|
||||
/*********************************************
|
||||
* COPLIENS
|
||||
*********************************************/
|
||||
@@ -39,7 +41,11 @@ VT_TPL template <class InputIterator> VT::
|
||||
}
|
||||
// copy constructor --------------------------
|
||||
VT_TPL VT::
|
||||
vector( vector const & src ) {
|
||||
vector( vector const & src )
|
||||
: _size(0)
|
||||
, _capacity(0)
|
||||
, _mem_ptr(NULL)
|
||||
, _allocator(src._allocator) {
|
||||
|
||||
*this = src;
|
||||
return;
|
||||
@@ -64,13 +70,11 @@ VT_TPL VT & VT::
|
||||
return *this;
|
||||
}
|
||||
|
||||
/*********************************************
|
||||
* PUBLIC MEMBER FUNCTIONS
|
||||
*********************************************/
|
||||
|
||||
/*************
|
||||
* iterators :
|
||||
*************/
|
||||
|
||||
/*************
|
||||
* iterators :
|
||||
*************/
|
||||
// begin -------------------------------------
|
||||
VT_TPL typename VT::iterator VT::
|
||||
begin() { return _mem_ptr; }
|
||||
@@ -82,19 +86,21 @@ VT_TPL typename VT::iterator VT::
|
||||
VT_TPL typename VT::const_iterator VT::
|
||||
end() const { return &_mem_ptr[_size]; }
|
||||
// rbegin ------------------------------------
|
||||
//VT_TPL typename VT::reverse_iterator VT::
|
||||
// rbegin() { return reverse_iterator(end()); }
|
||||
//VT_TPL typename VT::const_reverse_iterator VT::
|
||||
// rbegin() const { return const_reverse_iterator(end()); }
|
||||
VT_TPL typename VT::reverse_iterator VT::
|
||||
rbegin() { return reverse_iterator(end()); }
|
||||
VT_TPL typename VT::const_reverse_iterator VT::
|
||||
rbegin() const { return const_reverse_iterator(end()); }
|
||||
// rend --------------------------------------
|
||||
//VT_TPL typename VT::reverse_iterator VT::
|
||||
// rend() { return reverse_iterator(begin()); }
|
||||
//VT_TPL typename VT::const_reverse_iterator VT::
|
||||
// rend() const { return const_reverse_iterator(begin()); }
|
||||
VT_TPL typename VT::reverse_iterator VT::
|
||||
rend() { return reverse_iterator(begin()); }
|
||||
VT_TPL typename VT::const_reverse_iterator VT::
|
||||
rend() const { return const_reverse_iterator(begin()); }
|
||||
|
||||
/************
|
||||
* capacity :
|
||||
************/
|
||||
|
||||
|
||||
/************
|
||||
* capacity :
|
||||
************/
|
||||
// size --------------------------------------
|
||||
VT_TPL typename VT::size_type VT::
|
||||
size( ) const { return _size; }
|
||||
@@ -153,9 +159,11 @@ VT_TPL void VT::
|
||||
_mem_ptr = tmp_ptr;
|
||||
}
|
||||
|
||||
/******************
|
||||
* element access :
|
||||
******************/
|
||||
|
||||
|
||||
/******************
|
||||
* element access :
|
||||
******************/
|
||||
// operator[] --------------------------------
|
||||
VT_TPL typename VT::reference VT::
|
||||
operator[](size_type n) { return _mem_ptr[n]; }
|
||||
@@ -187,9 +195,11 @@ VT_TPL typename VT::reference VT::
|
||||
VT_TPL typename VT::const_reference VT::
|
||||
back() const { return (_mem_ptr[_size - 1]); }
|
||||
|
||||
/*************
|
||||
* modifiers :
|
||||
*************/
|
||||
|
||||
|
||||
/*************
|
||||
* modifiers :
|
||||
*************/
|
||||
// assign ------------------------------------
|
||||
VT_TPL template <class InputIterator>
|
||||
typename enable_if< !is_integral<InputIterator>::value,void >::type VT::
|
||||
@@ -338,9 +348,6 @@ typename enable_if< !is_integral<InputIterator>::value,void >::type VT::
|
||||
_destroy(position, std::min(position + n, it_end));
|
||||
}
|
||||
|
||||
// for (size_type i = 0; i < n; i++, position++)
|
||||
// _allocator.construct(position, val);
|
||||
|
||||
while (first != last)
|
||||
{
|
||||
_allocator.construct(position, *first);
|
||||
@@ -421,10 +428,10 @@ VT_TPL typename VT::allocator_type VT::
|
||||
get_allocator() const { return (_allocator); }
|
||||
|
||||
|
||||
|
||||
/*********************************************
|
||||
* PRIVATE MEMBER FUNCTIONS
|
||||
*********************************************/
|
||||
|
||||
VT_TPL void VT::
|
||||
_destroy(iterator first, iterator last) {
|
||||
|
||||
@@ -434,7 +441,6 @@ VT_TPL void VT::
|
||||
first++;
|
||||
}
|
||||
}
|
||||
|
||||
VT_TPL void VT::
|
||||
_increment_capacity(size_type n) {
|
||||
|
||||
@@ -445,30 +451,54 @@ VT_TPL void VT::
|
||||
}
|
||||
|
||||
|
||||
/*********************************************
|
||||
* OPERATORS
|
||||
*********************************************/
|
||||
|
||||
//std::ostream & operator<<(std::ostream & o, vector const & rhs)
|
||||
//{
|
||||
// o << rhs.getFoo();
|
||||
// return (o);
|
||||
//}
|
||||
|
||||
|
||||
/*********************************************
|
||||
* NESTED CLASS
|
||||
*********************************************/
|
||||
|
||||
//void vector::Class::function() {}
|
||||
|
||||
|
||||
|
||||
/*********************************************
|
||||
* STATICS
|
||||
*********************************************/
|
||||
|
||||
//std::string const vector::_bar = "bar";
|
||||
|
||||
|
||||
|
||||
/************************
|
||||
* non-member functions :
|
||||
************************/
|
||||
// operator == -------------------------------
|
||||
VT_TPL
|
||||
bool operator== (const VT & lhs, const VT & rhs) {
|
||||
|
||||
if (lhs.size() != rhs.size())
|
||||
return false;
|
||||
return ft::equal(lhs.begin(), lhs.end(), rhs.begin());
|
||||
}
|
||||
// operator < --------------------------------
|
||||
VT_TPL
|
||||
bool operator< (const VT & lhs, const VT & rhs) {
|
||||
|
||||
return ft::lexicographical_compare(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
|
||||
}
|
||||
// operator != -------------------------------
|
||||
VT_TPL
|
||||
bool operator!= (const VT & lhs, const VT & rhs) { return !(lhs == rhs); }
|
||||
// operator <= -------------------------------
|
||||
VT_TPL
|
||||
bool operator<= (const VT & lhs, const VT & rhs) { return !(lhs > rhs); }
|
||||
// operator > --------------------------------
|
||||
VT_TPL
|
||||
bool operator> (const VT & lhs, const VT & rhs) { return (rhs < lhs); }
|
||||
// operator >= -------------------------------
|
||||
VT_TPL
|
||||
bool operator>= (const VT & lhs, const VT & rhs) { return !(lhs < rhs); }
|
||||
// swap (vector) -------------------------------
|
||||
VT_TPL
|
||||
void swap (VT & lhs, VT & rhs) { lhs.swap(rhs); }
|
||||
|
||||
} // namespace ft
|
||||
|
||||
#undef VT
|
||||
|
||||
Reference in New Issue
Block a user