ADC Home > Reference Library > Reference > Darwin > Miscellaneous User Space API Reference
|
stl_vector.h |
Includes: |
This is an internal header file, included by other library headers. You should not attempt to use it directly.
_Vector_base |
template<typename _Tp, typename _Alloc> struct _Vector_base { struct _Vector_impl : public _Alloc { _Tp* _M_start; _Tp* _M_finish; _Tp* _M_end_of_storage; _Vector_impl( _Alloc const& __a) : _Alloc( __a), _M_start(0), _M_finish(0), _M_end_of_storage(0) { } }; public: typedef _Alloc allocator_type; allocator_type get_allocator() const { return *static_cast<const _Alloc*>( &this->_M_impl); } _Vector_base( const allocator_type& __a) : _M_impl(__a) { } _Vector_base( size_t __n, const allocator_type& __a) : _M_impl(__a) { this->_M_impl._M_start = this->_M_allocate( __n); this->_M_impl._M_finish = this->_M_impl._M_start; this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; } ~_Vector_base() { _M_deallocate( this->_M_impl._M_start, this->_M_impl._M_end_of_storage - this->_M_impl._M_start); } public: _Vector_impl _M_impl; _Tp* _M_allocate(size_t __n) { return _M_impl.allocate( __n); } void _M_deallocate(_Tp* __p, size_t __n) { if ( __p) _M_impl.deallocate( __p, __n); } };
@if maint See bits/stl_deque.h's _Deque_base for an explanation. @endif