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 ::