Compartir a través de


allocator_base (Clase)

Define la clase base y las funciones comunes necesarias para crear un asignador definido por el usuario a partir de un filtro de sincronización.

Sintaxis

template <class Type, class Sync>
class allocator_base

Parámetros

Tipo
Tipo de elementos que asigna el asignador.

Sincronizar
Directiva de sincronización del asignador, que es sync_none (Clase), sync_per_container (Clase), sync_per_thread (Clase) o sync_shared (Clase).

Constructores

Constructor Descripción
allocator_base Construye un objeto de tipo allocator_base.

Typedefs

Nombre de tipo Descripción
const_pointer Tipo que proporciona un puntero constante al tipo de objeto administrado por el asignador.
const_reference Tipo que proporciona una referencia constante al tipo de objeto administrado por el asignador.
difference_type Tipo entero con signo que puede representar la diferencia entre valores de punteros que señalan al tipo de objeto administrado por el asignador.
pointer Tipo que proporciona un puntero al tipo de objeto administrado por el asignador.
referencia Tipo que proporciona una referencia al tipo de objeto administrado por el asignador.
size_type Tipo entero sin signo que puede representar la longitud de cualquier secuencia que un objeto de tipo allocator_base puede asignar.
value_type Tipo administrado por el asignador.

Funciones miembro

Función de miembro Descripción
_Charalloc Asigna almacenamiento para una matriz de tipo char.
_Chardealloc Libera almacenamiento para la matriz que contiene elementos de tipo char.
address Encuentra la dirección de un objeto cuyo valor se especifica.
allocate Asigna un bloque de memoria lo suficientemente grande como para almacenar al menos un número especificado de elementos.
construct Crea un tipo concreto de objeto en una dirección especificada que se inicializa con un valor especificado.
deallocate Libera un número especificado de objetos del almacenamiento, a partir de la posición especificada.
destroy Llama a un destructor de objetos sin desasignar la memoria donde el objeto se almacena.
max_size Devuelve el número de elementos de tipo Type que podría asignar un objeto de clase allocator antes de que la memoria libre se agote.

Requisitos

Encabezado:<allocators>

Espacio de nombres: stdext

allocator_base::_Charalloc

Asigna almacenamiento para una matriz de tipo char.

char *_Charalloc(size_type count);

Parámetros

count
El número de elementos de la matriz que se van a asignar.

Valor devuelto

Un puntero al objeto asignado.

Comentarios

Los contenedores usan esta función miembro cuando se compilan con un compilador que no puede compilar el reenlace. Implementa _Charalloc para el asignador definido por el usuario al devolver el resultado de una llamada a la función allocate del filtro de sincronización.

allocator_base::_Chardealloc

Libera almacenamiento para la matriz que contiene elementos de tipo char.

void _Chardealloc(void* ptr, size_type count);

Parámetros

ptr
Un puntero al primer objeto que se va a desasignar del almacenamiento.

count
El número de objetos que se van a desasignar del almacenamiento.

Comentarios

Los contenedores usan esta función miembro cuando se compilan con un compilador que no puede compilar el reenlace. Implementa _Chardealloc para el asignador definido por el usuario al llamar a la función deallocate del filtro de sincronización. En el caso de un objeto de asignador igual a *this, el puntero ptr debe haber sido devuelto anteriormente por una llamada a _Charalloc, asignando un objeto de matriz del mismo tamaño y tipo. _Chardealloc nunca inicia una excepción.

allocator_base::address

Encuentra la dirección de un objeto cuyo valor se especifica.

pointer address(reference val);

const_pointer address(const_reference val);

Parámetros

val
Valor const o nonconst del objeto cuya dirección se busca.

Valor devuelto

Puntero const o nonconst al objeto encontrado de valor const o nonconst respectivamente.

Comentarios

Esta función miembro se implementa para el asignador definido por el usuario al devolver &val.

allocator_base::allocate

Asigna un bloque de memoria lo suficientemente grande como para almacenar al menos un número especificado de elementos.

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

pointer allocate(size_type _Nx);

Parámetros

_Nx
El número de elementos de la matriz que se van a asignar.

_Hint
Este parámetro se ignora.

Valor devuelto

Un puntero al objeto asignado.

Comentarios

La función miembro implementa la asignación de memoria para el asignador definido por el usuario al devolver el resultado de una llamada a la función allocate del filtro de sincronización de tipo * si _Nx == 1, en caso contrario, al devolver el resultado de una llamada a la conversión operator new(_Nx * sizeof(Type)) al tipo *.

allocator_base::allocator_base

Construye un objeto de tipo allocator_base.

allocator_base();

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

Parámetros

right
Objeto de asignador que se va a copiar.

Comentarios

El primer constructor crea una instancia allocator_base. El segundo constructor crea una instancia allocator_base como la creada para cualquier instancia allocator_base<Type, _Sync>a, allocator_base<Type, Sync>(allocator_base<Other, Sync>(a)) == a.

allocator_base::const_pointer

Tipo que proporciona un puntero constante al tipo de objeto administrado por el asignador.

typedef const Type *const_pointer;

allocator_base::const_reference

Tipo que proporciona una referencia constante al tipo de objeto administrado por el asignador.

typedef const Type& const_reference;

allocator_base::construct

Crea un tipo concreto de objeto en una dirección especificada que se inicializa con un valor especificado.

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

Parámetros

ptr
Puntero a la ubicación donde se va a crear el objeto.

val
Valor con el que se va a inicializar el objeto que se está creando.

Comentarios

Esta función miembro se implementa para el asignador definido por el usuario al llamar a new((void*)ptr Type(val).

allocator_base::d eallocate

Libera un número especificado de objetos del almacenamiento, a partir de la posición especificada.

void deallocate(pointer ptr, size_type _Nx);

Parámetros

ptr
Un puntero al primer objeto que se va a desasignar del almacenamiento.

_Nx
El número de objetos que se van a desasignar del almacenamiento.

Comentarios

Esta función miembro se implementa para el asignador definido por el usuario al llamar a deallocate(ptr) en el filtro de sincronización Sync si _Nx == 1, en caso contrario, al llamar a operator delete(_Nx * ptr).

allocator_base::d estroy

Llama a un destructor de objetos sin desasignar la memoria donde el objeto se almacena.

void destroy(pointer ptr);

Parámetros

ptr
Puntero que designa la dirección del objeto que se va a destruir.

Comentarios

Esta función miembro se implementa para el asignador definido por el usuario al llamar a ptr->~Type().

allocator_base::d ifference_type

Tipo entero con signo que puede representar la diferencia entre valores de punteros que señalan al tipo de objeto administrado por el asignador.

typedef std::ptrdiff_t difference_type;

allocator_base::max_size

Devuelve el número de elementos de tipo Type que podría asignar un objeto de clase allocator antes de que la memoria libre se agote.

size_type max_size() const;

Valor devuelto

Número de elementos que se pueden asignar.

Comentarios

Esta función miembro se implementa para el asignador definido por el usuario al devolver (size_t)-1 / sizeof(Type) si 0 < (size_t)-1 / sizeof(Type), de lo contrario, 1.

allocator_base::p ointer

Tipo que proporciona un puntero al tipo de objeto administrado por el asignador.

typedef Type *pointer;

allocator_base::reference

Tipo que proporciona una referencia al tipo de objeto administrado por el asignador.

typedef Type& reference;

allocator_base::size_type

Tipo entero sin signo que puede representar la longitud de cualquier secuencia que un objeto de tipo allocator_base puede asignar.

typedef std::size_t size_type;

allocator_base::value_type

Tipo administrado por el asignador.

typedef Type value_type;

Consulte también

<allocators>