Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As classes CMapde coleção , CListe CArray usam funções auxiliares globais modeladas para fins como comparação, cópia e serialização de elementos. Como parte de sua implementação de classes baseadas em CMap, CListe CArray, você deve substituir essas funções conforme necessário por versões adaptadas ao tipo de dados armazenados em seu mapa, lista ou matriz. Para obter informações sobre como substituir funções auxiliares, como SerializeElements, consulte o artigo Coleções: Como criar uma coleção Type-Safe. Observe que ConstructElements e DestructElements foram preteridos.
A Microsoft Foundation Class Library fornece as seguintes funções globais em afxtempl.h para ajudá-lo a personalizar suas classes de coleção:
Auxiliares de classe de coleção
| Nome | Descrição |
|---|---|
| CompareElements | Indica se os elementos são os mesmos. |
| Elementos de cópia | Copia elementos de uma matriz para outra. |
| DumpElements | Fornece saída de diagnóstico orientada a fluxo. |
| HashKey | Calcula uma chave de hash. |
| SerializeElements | Armazena ou recupera elementos de ou para um arquivo. |
CompareElements
Chamado diretamente por CList::Find e indiretamente por CMap::Lookup e CMap::operator[].
template<class TYPE, class ARG_TYPE>
BOOL AFXAPI
CompareElements(
const TYPE* pElement1,
const ARG_TYPE* pElement2);
Parâmetros
TIPO
O tipo do primeiro elemento a ser comparado.
pElement1
Ponteiro para o primeiro elemento a ser comparado.
ARG_TYPE
O tipo do segundo elemento a ser comparado.
pElement2
Ponteiro para o segundo elemento a ser comparado.
Valor de retorno
Diferente de zero se o objeto apontado por pElement1 for igual ao objeto apontado por pElement2; caso contrário, 0.
Observações
As CMap chamadas usam os CMap parâmetros de modelo KEY e ARG_KEY.
A implementação padrão retorna o resultado da comparação de *pElement1 e *pElement2. Substitua essa função para que ela compare os elementos de uma maneira apropriada para seu aplicativo.
A linguagem C++ define o operador de comparação (==) para tipos simples (char, int, float, e assim por diante), mas não define um operador de comparação para classes e estruturas. Se você quiser usar CompareElements ou instanciar uma das classes de coleção que o usa, você deve definir o operador de comparação ou sobrecarregar CompareElements com uma versão que retorna valores apropriados.
Requerimentos
Cabeçalho: afxtempl.h
Elementos de cópia
Esta função é chamada diretamente por CArray::Append e CArray::Copy.
template<class TYPE>
void AFXAPI CopyElements(
TYPE* pDest,
const TYPE* pSrc,
INT_PTR nCount);
Parâmetros
TIPO
Parâmetro de modelo que especifica o tipo de elementos a serem copiados.
pDest
Ponteiro para o destino onde os elementos serão copiados.
pSrc
Ponteiro para a origem dos elementos a serem copiados.
nContagem
Número de elementos a copiar.
Observações
A implementação padrão usa o operador de atribuição simples ( = ) para executar a operação de cópia. Se o tipo que está sendo copiado não tiver um operador sobrecarregado=, a implementação padrão executará uma cópia bitwise.
Para obter informações sobre como implementar esta e outras funções auxiliares, consulte o artigo Collections: How to Make a Type-Safe Collection.
Requerimentos
Cabeçalho afxtempl.h
DumpElements
Fornece saída de diagnóstico orientada a fluxo em forma de texto para os elementos de sua coleção quando substituídos.
template<class TYPE>
void AFXAPI DumpElements(
CDumpContext& dc,
const TYPE* pElements,
INT_PTR nCount);
Parâmetros
DC
Contexto de despejo para elementos de dumping.
TIPO
Parâmetro de modelo que especifica o tipo dos elementos.
Elementos pElements
Ponteiro para os elementos a serem despejados.
nContagem
Número de elementos a serem despejados.
Observações
As CArray::Dumpfunções , CList::Dump, e chamam CMap::Dump isso se a profundidade do despejo for maior que 0.
A implementação padrão não faz nada. Se os elementos da sua coleção forem derivados do CObject, sua substituição normalmente iterará pelos elementos da coleção, chamando Dump cada elemento por vez.
Requerimentos
Cabeçalho afxtempl.h
HashKey
Calcula um valor de hash para a chave fornecida.
template<class ARG_KEY>
AFX_INLINE UINT AFXAPI HashKey(ARG_KEY key);
Parâmetros
ARG_KEY
Parâmetro de modelo que especifica o tipo de dados usado para acessar chaves de mapa.
chave
A chave cujo valor de hash deve ser calculado.
Valor de retorno
O valor de hash da chave.
Observações
Esta função é chamada diretamente por CMap::RemoveKey e indiretamente por CMap::Lookup e CMap::operator[].
A implementação padrão cria um valor de hash deslocando a chave para a direita em quatro posições. Substitua essa função para que ela retorne valores de hash apropriados para seu aplicativo.
Exemplo
template <> UINT AFXAPI HashKey(unsigned __int64 key)
{
// Generate the hash value by XORing the lower 32 bits of the number
// with the upper 32 bits
return(UINT(key) ^ UINT(key >> 32));
}
Requerimentos
Cabeçalho afxtempl.h
SerializeElements
CArray, CList e CMap chamam essa função para serializar elementos.
template<class TYPE>
void AFXAPI SerializeElements(CArchive& ar, TYPE* pElements, INT_PTR nCount);
Parâmetros
TIPO
Parâmetro de modelo que especifica o tipo dos elementos.
RA
Um objeto de arquivo para arquivar de ou para fora.
Elementos pElements
Ponteiro para os elementos que estão sendo arquivados.
nContagem
Número de elementos arquivados
Observações
A implementação padrão faz uma leitura ou gravação bit a bit.
Para obter informações sobre como implementar esta e outras funções auxiliares, consulte o artigo Collections: How to Make a Type-Safe Collection.
Exemplo
Veja o exemplo no artigo Coleções: Como fazer uma coleção Type-Safe.
Requerimentos
Cabeçalho afxtempl.h