Classe allocator_base
Define a classe base e as funções comuns necessárias para criar um alocador definido pelo usuário de um filtro de sincronização.
Sintaxe
template <class Type, class Sync>
class allocator_base
Parâmetros
Tipo
O tipo dos elementos alocados pelo alocador.
Sincronizar
A política de sincronização do alocador, que é Classe sync_none, Classe sync_per_container, Classe sync_per_thread ou Classe sync_shared.
Construtores
Construtor | Descrição |
---|---|
allocator_base | Constrói um objeto do tipo allocator_base . |
Typedefs
Nome do tipo | Descrição |
---|---|
const_pointer | Um tipo que fornece um ponteiro constante para o tipo de objeto gerenciado pelo alocador. |
const_reference | Um tipo que fornece uma referência constante ao tipo de objeto gerenciado pelo alocador. |
difference_type | Um tipo integral com sinal que pode representar a diferença entre os valores de ponteiros para o tipo de objeto gerenciado pelo alocador. |
pointer | Um tipo que fornece um ponteiro para o tipo de objeto gerenciado pelo alocador. |
referência | Um tipo que fornece uma referência ao tipo de objeto gerenciado pelo alocador. |
size_type | Um tipo integral sem sinal que pode representar o comprimento de qualquer sequência que um objeto do tipo allocator_base possa alocar. |
value_type | Um tipo que é gerenciado pelo alocador. |
Funções de membro
Função de membro | Descrição |
---|---|
_Charalloc | Aloca armazenamento para uma matriz do tipos char . |
_Chardealloc | Libera armazenamento para a matriz que contém os elementos do tipo char . |
address | Localiza o endereço de um objeto cujo valor é especificado. |
allocate | Aloca um bloco de memória grande o suficiente para armazenar pelo menos um número especificado de elementos. |
construct | Constrói um tipo específico de objeto em um endereço especificado que é inicializado com um valor especificado. |
deallocate | Libera um número especificado de objetos do armazenamento começando em uma posição especificada. |
destroy | Chama um destruidor de objetos sem desalocar a memória na qual o objeto foi armazenado. |
max_size | Retorna o número de elementos do tipo Type que podem ser alocados por um objeto da classe allocator antes que a memória livre seja totalmente usada. |
Requisitos
Cabeçalho:<allocators>
Namespace: stdext
allocator_base::_Charalloc
Aloca armazenamento para uma matriz do tipos char
.
char *_Charalloc(size_type count);
Parâmetros
count
O número de elementos na matriz a serem alocados.
Valor de retorno
Um ponteiro para o objeto alocado.
Comentários
Essa função membro é usada pelos contêineres quando são compilados com um compilador que não pode compilar a reassociação. Ela implementa _Charalloc
para o alocador definido pelo usuário, retornando o resultado de uma chamada para a função allocate
do filtro de sincronização.
allocator_base::_Chardealloc
Libera armazenamento para a matriz que contém os elementos do tipo char
.
void _Chardealloc(void* ptr, size_type count);
Parâmetros
ptr
Um ponteiro para o primeiro objeto a ser desalocado do armazenamento.
count
O número de objetos a serem desalocados do armazenamento.
Comentários
Essa função membro é usada pelos contêineres quando são compilados com um compilador que não pode compilar a reassociação. Ela implementa _Chardealloc
para o alocador definido pelo usuário ao chamar a função deallocate
do filtro de sincronização. O ponteiro PTR deve ter sido retornado anteriormente por uma chamada para _Charalloc
de um objeto alocador que compara como igual a *this
, alocando um objeto de matriz dos mesmos tipo e tamanho. _Chardealloc
nunca gera uma exceção.
allocator_base::endereço
Localiza o endereço de um objeto cujo valor é especificado.
pointer address(reference val);
const_pointer address(const_reference val);
Parâmetros
val
O valor const ou não const do objeto cujo endereço está sendo pesquisado.
Valor de retorno
Um ponteiro const ou não const para o objeto localizado, de valor const ou não const, respectivamente.
Comentários
Essa função de membro é implementada para o alocador definido pelo usuário, retornando &val
.
allocator_base::alocar
Aloca um bloco de memória grande o suficiente para armazenar pelo menos um 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
O número de elementos na matriz a serem alocados.
_Hint
Este parâmetro é ignorado.
Valor de retorno
Um ponteiro para o objeto alocado.
Comentários
A função de membro implementa a alocação de memória para o alocador definido pelo usuário, retornando o resultado de uma chamada para a função allocate
do filtro de sincronização do tipo Type *
se _Nx == 1
, caso contrário, retornando o resultado de uma chamada para operator new(_Nx * sizeof(Type))
transmitido para o tipo Type *
.
allocator_base::allocator_base
Constrói um objeto do tipo allocator_base
.
allocator_base();
template <class Other>
allocator_base(const allocator_base<Other, Sync>& right);
Parâmetros
direita
O objeto alocador a ser copiado.
Comentários
O primeiro construtor constrói uma instância de allocator_base. O segundo construtor constrói uma instância allocator_base
de modo que, para qualquer instância de allocator_base<Type, _Sync>
a
, allocator_base<Type, Sync>(allocator_base<Other, Sync>(a)) == a
.
allocator_base::const_pointer
Um tipo que fornece um ponteiro constante para o tipo de objeto gerenciado pelo alocador.
typedef const Type *const_pointer;
allocator_base::const_reference
Um tipo que fornece uma referência constante ao tipo de objeto gerenciado pelo alocador.
typedef const Type& const_reference;
allocator_base::construir
Constrói um tipo específico de objeto em um endereço especificado que é inicializado com um valor especificado.
void construct(pointer ptr, const Type& val);
Parâmetros
ptr
Um ponteiro para o local no qual o objeto deve ser construído.
val
O valor com o qual o objeto que está sendo construído deve ser inicializado.
Comentários
Essa função de membro é implementada para o alocador definido pelo usuário ao chamar new((void*)ptr Type(val)
.
allocator_base::d eallocate
Libera um número especificado de objetos do armazenamento começando em uma posição especificada.
void deallocate(pointer ptr, size_type _Nx);
Parâmetros
ptr
Um ponteiro para o primeiro objeto a ser desalocado do armazenamento.
_Nx
O número de objetos a serem desalocados do armazenamento.
Comentários
Essa função de membro é implementada para o alocador definido pelo usuário chamando deallocate(ptr)
no filtro de sincronização Sync
se _Nx == 1
, caso contrário, chamando operator delete(_Nx * ptr)
.
allocator_base::d estroy
Chama um destruidor de objetos sem desalocar a memória na qual o objeto foi armazenado.
void destroy(pointer ptr);
Parâmetros
ptr
Um ponteiro que designa o endereço do objeto a ser destruído.
Comentários
Essa função de membro é implementada para o alocador definido pelo usuário ao chamar ptr->~Type()
.
allocator_base::d tipo_de_diferenciação
Um tipo integral com sinal que pode representar a diferença entre os valores de ponteiros para o tipo de objeto gerenciado pelo alocador.
typedef std::ptrdiff_t difference_type;
allocator_base::max_size
Retorna o número de elementos do tipo Type
que podem ser alocados por um objeto da classe allocator antes que a memória livre seja totalmente usada.
size_type max_size() const;
Valor de retorno
O número de elementos que podem ser alocados.
Comentários
Essa função de membro é implementada para o alocador definido pelo usuário, retornando (size_t)-1 / sizeof(Type)
se 0 < (size_t)-1 / sizeof(Type)
, caso contrário, 1
.
allocator_base::p ointer
Um tipo que fornece um ponteiro para o tipo de objeto gerenciado pelo alocador.
typedef Type *pointer;
allocator_base::referência
Um tipo que fornece uma referência ao tipo de objeto gerenciado pelo alocador.
typedef Type& reference;
allocator_base::size_type
Um tipo integral sem sinal que pode representar o comprimento de qualquer sequência que um objeto do tipo allocator_base
possa alocar.
typedef std::size_t size_type;
allocator_base::value_type
Um tipo que é gerenciado pelo alocador.
typedef Type value_type;