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;