aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/bits/stl_vector.h
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/include/bits/stl_vector.h')
-rw-r--r--libstdc++-v3/include/bits/stl_vector.h58
1 files changed, 33 insertions, 25 deletions
diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h
index f0ba3328002..10433f9ad13 100644
--- a/libstdc++-v3/include/bits/stl_vector.h
+++ b/libstdc++-v3/include/bits/stl_vector.h
@@ -81,7 +81,7 @@ namespace _GLIBCXX_STD
_Tp* _M_start;
_Tp* _M_finish;
_Tp* _M_end_of_storage;
- _Vector_impl (_Alloc const& __a)
+ _Vector_impl(_Alloc const& __a)
: _Alloc(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)
{ }
};
@@ -118,7 +118,8 @@ namespace _GLIBCXX_STD
void
_M_deallocate(_Tp* __p, size_t __n)
- { if (__p)
+ {
+ if (__p)
_M_impl.deallocate(__p, __n);
}
};
@@ -198,9 +199,11 @@ namespace _GLIBCXX_STD
vector(size_type __n, const value_type& __value,
const allocator_type& __a = allocator_type())
: _Base(__n, __a)
- { this->_M_impl._M_finish = std::uninitialized_fill_n(this->
- _M_impl._M_start,
- __n, __value); }
+ {
+ std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value,
+ this->get_allocator());
+ this->_M_impl._M_finish = this->_M_impl._M_start + __n;
+ }
/**
* @brief Create a %vector with default elements.
@@ -212,10 +215,11 @@ namespace _GLIBCXX_STD
explicit
vector(size_type __n)
: _Base(__n, allocator_type())
- { this->_M_impl._M_finish = std::uninitialized_fill_n(this->
- _M_impl._M_start,
- __n,
- value_type()); }
+ {
+ std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, value_type(),
+ this->get_allocator());
+ this->_M_impl._M_finish = this->_M_impl._M_start + __n;
+ }
/**
* @brief %Vector copy constructor.
@@ -228,10 +232,10 @@ namespace _GLIBCXX_STD
*/
vector(const vector& __x)
: _Base(__x.size(), __x.get_allocator())
- { this->_M_impl._M_finish = std::uninitialized_copy(__x.begin(),
- __x.end(),
- this->
- _M_impl._M_start);
+ { this->_M_impl._M_finish =
+ std::__uninitialized_copy_a(__x.begin(), __x.end(),
+ this->_M_impl._M_start,
+ this->get_allocator());
}
/**
@@ -266,7 +270,9 @@ namespace _GLIBCXX_STD
* responsibilty.
*/
~vector()
- { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish); }
+ { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ this->get_allocator());
+ }
/**
* @brief %Vector assignment operator.
@@ -597,7 +603,7 @@ namespace _GLIBCXX_STD
{
if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
{
- std::_Construct(this->_M_impl._M_finish, __x);
+ this->_M_impl.construct(this->_M_impl._M_finish, __x);
++this->_M_impl._M_finish;
}
else
@@ -617,7 +623,7 @@ namespace _GLIBCXX_STD
pop_back()
{
--this->_M_impl._M_finish;
- std::_Destroy(this->_M_impl._M_finish);
+ this->_M_impl.destroy(this->_M_impl._M_finish);
}
/**
@@ -757,7 +763,8 @@ namespace _GLIBCXX_STD
pointer __result = this->_M_allocate(__n);
try
{
- std::uninitialized_copy(__first, __last, __result);
+ std::__uninitialized_copy_a(__first, __last, __result,
+ this->get_allocator());
return __result;
}
catch(...)
@@ -777,9 +784,9 @@ namespace _GLIBCXX_STD
{
this->_M_impl._M_start = _M_allocate(__n);
this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
- this->_M_impl._M_finish = std::uninitialized_fill_n(this->
- _M_impl._M_start,
- __n, __value);
+ std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value,
+ this->get_allocator());
+ this->_M_impl._M_finish = this->_M_impl._M_end_of_storage;
}
// Called by the range constructor to implement [23.1.1]/9
@@ -799,7 +806,7 @@ namespace _GLIBCXX_STD
_M_range_initialize(_InputIterator __first,
_InputIterator __last, input_iterator_tag)
{
- for ( ; __first != __last; ++__first)
+ for (; __first != __last; ++__first)
push_back(*__first);
}
@@ -809,12 +816,13 @@ namespace _GLIBCXX_STD
_M_range_initialize(_ForwardIterator __first,
_ForwardIterator __last, forward_iterator_tag)
{
- size_type __n = std::distance(__first, __last);
+ const size_type __n = std::distance(__first, __last);
this->_M_impl._M_start = this->_M_allocate(__n);
this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
- this->_M_impl._M_finish = std::uninitialized_copy(__first, __last,
- this->
- _M_impl._M_start);
+ this->_M_impl._M_finish =
+ std::__uninitialized_copy_a(__first, __last,
+ this->_M_impl._M_start,
+ this->get_allocator());
}