Класс allocator_base

Определяет базовый класс и общие функции, необходимые для создания определяемого пользователем распределителя из фильтра синхронизации.

Синтаксис

template <class Type, class Sync>
class allocator_base

Параметры

Тип
Тип элементов, распределяемых распределителем.

Синхронизация
Политика синхронизации распределителя: класс sync_none, класс sync_per_container, класс sync_per_thread или класс sync_shared.

Конструкторы

Конструктор Description
allocator_base Создает объект типа allocator_base.

Определения типов

Введите имя Description
const_pointer Тип, предоставляющий постоянный указатель на тип объекта, управляемого распределителем.
const_reference Тип, предоставляющий постоянную ссылку на тип объекта, управляемого распределителем.
difference_type Тип целого числа со знаком, который может представлять разницу между значениями указателей на тип объекта, управляемого распределителем.
pointer Тип, предоставляющий указатель на тип объекта, управляемого распределителем.
reference Тип, предоставляющий ссылку на тип объекта, управляемого распределителем.
size_type Неподписанный целочисленный тип, который может представлять длину любой последовательности, которую может выделить объект типа allocator_base .
value_type Тип, управляемый распределителем.

Функции элементов

Функция-член Description
_Charalloc Выделяет память для массива типа char.
_Chardealloc Освобождает хранилище для массива, содержащего элементы типа char.
address Находит адрес объекта, значение которого задано.
allocate Выделяет блок памяти, достаточный для хранения по крайней мере некоторого указанного числа элементов.
construct Создает определенный тип объекта по указанному адресу, инициализированный с использованием заданного значения.
deallocate Освобождает указанное число объектов из памяти, начиная с заданной позиции.
destroy Вызывает деструктор объектов без освобождения памяти, в которой хранился объект.
max_size Возвращает количество элементов типа Type, которые могут быть выделены объектом класса allocator в пределах имеющейся свободной памяти.

Требования

Заголовок:<распределители>

Пространство имен: stdext

allocator_base::_Charalloc

Выделяет память для массива типа char.

char *_Charalloc(size_type count);

Параметры

count
Число выделяемых элементов в массиве.

Возвращаемое значение

Указатель на выделяемый объект.

Замечания

Эта функция-член используется контейнерами при компиляции с компилятором, который не может скомпилировать повторную привязку. Она реализует _Charalloc для пользовательского распределителя, возвращая результат вызова функции allocate фильтра синхронизации.

allocator_base::_Chardealloc

Освобождает хранилище для массива, содержащего элементы типа char.

void _Chardealloc(void* ptr, size_type count);

Параметры

ptr
Указатель на первый объект, который необходимо освободить из хранилища.

count
Количество объектов для освобождения из хранилища.

Замечания

Эта функция-член используется контейнерами при компиляции с компилятором, который не может скомпилировать повторную привязку. Она реализует _Chardealloc для пользовательского распределителя путем вызова функции deallocate фильтра синхронизации. Указатель ptr должен быть возвращен ранее путем вызова _Charallocallocator, который сравнивает его с *this, выделяя объект массива того же типа и размера. _Chardealloc никогда не создает исключений.

allocator_base::address

Находит адрес объекта, значение которого задано.

pointer address(reference val);

const_pointer address(const_reference val);

Параметры

Val
Константное или неконстантное значение объекта, адрес которого ищется.

Возвращаемое значение

Константный или неконстантный указатель на найденный объект соответственно константного или неконстантного значения.

Замечания

Эта функция-член реализуется для пользовательского распределителя путем возврата &val.

allocator_base::allocate

Выделяет блок памяти, достаточный для хранения по крайней мере некоторого указанного числа элементов.

template <class Other>
pointer allocate(size_type _Nx, const Other* _Hint = 0);

pointer allocate(size_type _Nx);

Параметры

_Nx
Число выделяемых элементов в массиве.

_Hint
Этот параметр не учитывается.

Возвращаемое значение

Указатель на выделяемый объект.

Замечания

Эта функция-член реализует выделение памяти для пользовательского распределителя путем возврата результата вызова функции allocate фильтра синхронизации типа Type *, если _Nx == 1, в противном случае — путем возврата результата вызова приведения operator new(_Nx * sizeof(Type)) к типу Type *.

allocator_base::allocator_base

Создает объект типа allocator_base.

allocator_base();

template <class Other>
allocator_base(const allocator_base<Other, Sync>& right);

Параметры

right
Объект allocator для копирования.

Замечания

Первый конструктор создает экземпляр allocator_base. Второй конструктор создает экземпляр allocator_base так, что для любого экземпляра allocator_base<Type, _Sync>a, allocator_base<Type, Sync>(allocator_base<Other, Sync>(a)) == a.

allocator_base::const_pointer

Тип, предоставляющий постоянный указатель на тип объекта, управляемого распределителем.

typedef const Type *const_pointer;

allocator_base::const_reference

Тип, предоставляющий постоянную ссылку на тип объекта, управляемого распределителем.

typedef const Type& const_reference;

allocator_base::construct

Создает определенный тип объекта по указанному адресу, инициализированный с использованием заданного значения.

void construct(pointer ptr, const Type& val);

Параметры

ptr
Указатель места, в котором должен создаваться объект.

Val
Значение, с которым создаваемый объект будет инициализирован.

Замечания

Эта функция-член реализуется для пользовательского распределителя путем вызова new((void*)ptr Type(val).

allocator_base::d eallocate

Освобождает указанное число объектов из памяти, начиная с заданной позиции.

void deallocate(pointer ptr, size_type _Nx);

Параметры

ptr
Указатель на первый объект, который необходимо освободить из хранилища.

_Nx
Количество объектов для освобождения из хранилища.

Замечания

Эта функция-член реализуется для пользовательского распределителя путем вызова deallocate(ptr) в фильтре синхронизации Sync, если _Nx == 1, в противном случае — путем вызова operator delete(_Nx * ptr).

allocator_base::d e

Вызывает деструктор объектов без освобождения памяти, в которой хранился объект.

void destroy(pointer ptr);

Параметры

ptr
Указатель, обозначающий адрес уничтожаемого объекта.

Замечания

Эта функция-член реализуется для пользовательского распределителя путем вызова ptr->~Type().

allocator_base::d ifference_type

Тип целого числа со знаком, который может представлять разницу между значениями указателей на тип объекта, управляемого распределителем.

typedef std::ptrdiff_t difference_type;

allocator_base::max_size

Возвращает количество элементов типа Type, которые могут быть выделены объектом класса в пределах имеющейся свободной памяти.

size_type max_size() const;

Возвращаемое значение

Количество элементов, которые могут быть выделены.

Замечания

Эта функция-член реализуется для пользовательского распределителя путем возврата (size_t)-1 / sizeof(Type), если 0 < (size_t)-1 / sizeof(Type)в противном случае — 1.

allocator_base::p ointer

Тип, предоставляющий указатель на тип объекта, управляемого распределителем.

typedef Type *pointer;

allocator_base::reference

Тип, предоставляющий ссылку на тип объекта, управляемого распределителем.

typedef Type& reference;

allocator_base::size_type

Неподписанный целочисленный тип, который может представлять длину любой последовательности, которую может выделить объект типа allocator_base .

typedef std::size_t size_type;

allocator_base::value_type

Тип, управляемый распределителем.

typedef Type value_type;

См. также

<Распределители>