Class template node_allocator Boost , The Boost C++ Libraries BoostBook Documentation Subset , Boost.Container Header Reference    
  
Class template node_allocator boost::container::node_allocator
 
Synopsis 
template < typename  T,  std :: size_t  NodesPerBlock =  NodeAlloc_nodes_per_block >  
class  node_allocator  { 
public : 
  
  typedef  T               value_type ;      
  typedef  T  *             pointer ;         
  typedef  const  T  *       const_pointer ;   
  typedef  unspecified reference ;       
  typedef  unspecified const_reference ; 
  typedef  std :: size_t     size_type ;       
  typedef  std :: ptrdiff_t  difference_type ; 
  typedef  unspecified version ;         
  
  template < typename  T2>  
  struct  rebind  { 
    
    typedef  node_allocator <  T2 ,  NodesPerBlock  >  other ; 
  } ; 
  
  node_allocator ( )  noexcept ; 
  node_allocator ( const  node_allocator  & )  noexcept ; 
  template < typename  T2>  
    node_allocator ( const  node_allocator <  T2 ,  NodesPerBlock  >  & )  noexcept ; 
  ~ node_allocator ( ) ; 
  
  size_type  max_size ( )  const ; 
  pointer  allocate ( size_type ,  const  void  *  =  0 ) ; 
  void  deallocate ( const  pointer  & ,  size_type )  noexcept ; 
  pointer  allocation_command ( allocation_type ,  size_type ,  size_type  & ,  
                             pointer  & ) ; 
  size_type  size ( pointer )  const  noexcept ; 
  pointer  allocate_one ( ) ; 
  void  allocate_individual ( std :: size_t ,  multiallocation_chain  & ) ; 
  void  deallocate_one ( pointer )  noexcept ; 
  void  deallocate_individual ( multiallocation_chain  & )  noexcept ; 
  void  allocate_many ( size_type ,  std :: size_t ,  multiallocation_chain  & ) ; 
  void  allocate_many ( const  size_type  * ,  size_type ,  multiallocation_chain  & ) ; 
  void  deallocate_many ( multiallocation_chain  & )  noexcept ; 
  
  static  void  deallocate_free_blocks ( )  noexcept ; 
  
  friend  void  swap ( self_t  & ,  self_t  & )  noexcept ; 
  friend  bool  operator == ( const  node_allocator  & ,  const  node_allocator  & )  noexcept ; 
  friend  bool  operator != ( const  node_allocator  & ,  const  node_allocator  & )  noexcept ; 
  
  pointer  priv_allocation_command ( allocation_type ,  std :: size_t ,  size_type  & ,  
                                  pointer  & ) ; 
} ; 
Description 
Аллокатор узла STL, который использует модифицированный DlMalloc в качестве источника памяти.
Этот распределитель узлов делит отдельное хранилище между всеми экземплярамиnode_allocator с равным размером (T).
NodesPerBlock - это количество узлов, выделенных одновременно, когда у распределителя заканчиваются узлы.
node_allocator 
        public
       construct/copy/destruct 
<node_allocator ( ) noexcept ;  
<node_allocator ( const node_allocator & ) noexcept ; node_allocator  
<template < typename T2> 
 node_allocator ( const node_allocator < T2 , NodesPerBlock > & ) noexcept ; node_allocator  
<~ node_allocator ( ) ;  
  
node_allocator public member functions 
<size_type max_size ( ) const ; Возвращает количество элементов, которые можно было бы выделить. Никогда не бросайте
 
<pointer allocate ( size_type count, const void * = 0 ) ; Выделите память для массива счетных элементов. Бросает std::bad_alloc, если памяти недостаточно
 
<void deallocate ( const pointer & ptr, size_type count) noexcept ; Выделить выделенную память. Никогда не бросайте
 
<pointer allocation_command ( allocation_type command, size_type limit_size, 
                          size_type & prefer_in_recvd_out_size, 
                          pointer & reuse) ;  
<size_type size ( pointer p) const noexcept ; Возвращает максимальное количество объектов, которые может удерживать ранее выделенная память, указанная p.
 
<pointer allocate_one ( ) ; Выделяют только один объект. Память, выделенная с этой функцией, должна быть размещена только с помощью deallocate_one(). Бросает bad_alloc, если памяти недостаточно
 
<void allocate_individual ( std :: size_t num_elements, 
                        multiallocation_chain & chain) ; Выделяет множество элементов размера == 1. Элементы должны быть индивидуально размещены с помощью deallocate_one()
 
<void deallocate_one ( pointer p) noexcept ; Выделяет память, ранее выделенную с выделением_one(). Вы никогда не должны использовать deallocate_one для обработки памяти, выделенной с другими функциями, отличными от allocate_one(). Никогда не бросайте
 
<void deallocate_individual ( multiallocation_chain & chain) noexcept ;  
<void allocate_many ( size_type elem_size, std :: size_t n_elements, 
                  multiallocation_chain & chain) ; Выделяют множество элементов размера elem_size. Элементы должны быть индивидуально размещены с помощью deallocate()
 
<void allocate_many ( const size_type * elem_sizes, size_type n_elements, 
                  multiallocation_chain & chain) ; Выделяют элементы n_элементов, каждый из которых имеет размер elem_sizes[i] Элементы должны быть индивидуально размещены с помощью deallocate()
 
<void deallocate_many ( multiallocation_chain & chain) noexcept ;  
  
node_allocator public static functions 
<static void deallocate_free_blocks ( ) noexcept ;   
node_allocator friend functions 
<friend void swap ( self_t & , self_t & ) noexcept ; Распределители свопов. Не бросает. Если каждый распределитель помещается в отдельный сегмент памяти, результат не определен.
 
<friend bool operator == ( const node_allocator & , const node_allocator & ) noexcept ; Распределитель всегда сравнивается с истинным, так как память, выделенная одним экземпляром, может распределяться другим экземпляром
. 
<friend bool operator != ( const node_allocator & , const node_allocator & ) noexcept ; Распределитель всегда сравнивается с ложным, поскольку память, выделенная одним экземпляром, может быть размещена другим экземпляром
. 
  
node_allocator private member functions 
<pointer priv_allocation_command ( allocation_type command, 
                               std :: size_t limit_size, 
                               size_type & prefer_in_recvd_out_size, 
                               pointer & reuse) ;   
 
 
Статья Class template node_allocator  раздела The Boost C++ Libraries BoostBook Documentation Subset Boost.Container Header Reference  может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная  :: Boost.Container Header Reference  ::