Partilhar via


Recomendações para escolher uma classe de coleção

Este artigo contém informações detalhadas criada para ajudá-lo a escolher uma classe de coleção para suas necessidades específicas do aplicativo.

A escolha de uma classe de coleção depende de vários fatores, incluindo:

  • Os recursos de formas da classe: ordem, a indexação, e desempenho, conforme mostrado na tabela de Recursos de formas de coleção posteriormente neste tópico

  • Se a classe usa modelos C++

  • Se os elementos armazenados na coleção podem ser serializados

  • Se os elementos da coleção podem ser armazenados despejados para diagnóstico

  • Se a coleção é fortemente tipado

A tabela a seguir, Recursos de formas de coleção, resume as características das formas disponíveis da coleção.

  • As colunas 2 e 3 descrevem cada forma que acessam ordena e características. Na tabela, o termo “ordenou” significa que a ordem em que os itens são inseridos e excluídos determina a ordem na coleção; não significa que os itens são classificados em seu conteúdo. O termo “indexado” significa que os itens da coleção podem ser recuperados por um índice inteiro, bem como itens em uma matriz típica.

  • As colunas 4 e 5 descrevem o desempenho de cada forma. Em aplicativos que requerem muitas inserções na coleção, a velocidade de inserção pode ser especialmente importante; para outros aplicativos, a velocidade de pesquisa pode ser mais importante.

  • 6 Se a coluna descreve cada forma permite os elementos duplicados.

Recursos de formas de coleção

Forma

Ordenado?

Indexados?

Insere um elemento

Pesquise pelo elemento especificado

Duplique os elementos?

Lista

Sim

Não

Jejue

Lenta

Sim

Matriz

Sim

Por int

Lenta

Lenta

Sim

Mapa

Não

Por chave

Jejue

Jejue

Nenhum Sim (de chaves) (valores)

A tabela a seguir, Características de classes de coleção de MFC, resume outras características importantes de classes específicas da coleção de MFC como a guia na seleção. A opção pode depender se a classe é baseada em modelos C++, se os elementos podem ser serializados por meio do mecanismo de serialização do documento MFC, se os elementos podem ser despejados por meio do mecanismo de despejo de diagnóstico MFC, ou se a classe for fortemente tipado - isto é, se você pode garantir o tipo de elementos armazenados no e recuperados de uma coleção com base na classe.

Características de classes de coleção de MFC

Classe

Usa C++

modelos

Pode ser

serializado

Pode ser

despejado

Is

tipo de segurança

CArray

Sim

Sim 1

Sim 1

Não

CByteArray

Não

Sim

Sim

Sim 3

CDWordArray

Não

Sim

Sim

Sim 3

CList

Sim

Sim 1

Sim 1

Não

CMap

Sim

Sim 1

Sim 1

Não

CMapPtrToPtr

Não

Não

Sim

Não

CMapPtrToWord

Não

Não

Sim

Não

CMapStringToOb

Não

Sim

Sim

Não

CMapStringToPtr

Não

Não

Sim

Não

CMapStringToString

Não

Sim

Sim

Sim 3

CMapWordToOb

Não

Sim

Sim

Não

CMapWordToPtr

Não

Não

Sim

Não

CObArray

Não

Sim

Sim

Não

CObList

Não

Sim

Sim

Não

CPtrArray

Não

Não

Sim

Não

CPtrList

Não

Não

Sim

Não

CStringArray

Não

Sim

Sim

Sim 3

CStringList

Não

Sim

Sim

Sim 3

CTypedPtrArray

Sim

Dependem 2

Sim

Sim

CTypedPtrList

Sim

Dependem 2

Sim

Sim

CTypedPtrMap

Sim

Dependem 2

Sim

Sim

CUIntArray

Não

Não

Sim

Sim 3

CWordArray

Não

Sim

Sim

Sim 3

1. Para serializar, você deve chamar explicitamente a função de Serialize do objeto da coleção; para despejar, você deve chamar explicitamente a função de Dump . Você não pode usar o formulário ar << collObj para serializar ou o formulário dmp << collObj a despejar.

2. Serialização depende do tipo subjacente da coleção. Por exemplo, se uma matriz de ponteiro digitada é baseada em CObArray, é serializable; se baseia em CPtrArray, não é serializable. Em geral, as classes de “Ptr” não pode ser serializados.

3. Se Sim marcado nessa coluna, uma classe de coleção de nontemplate é fortemente tipado fornecido você usará como pretendido. Por exemplo, se você armazenar bytes em CByteArray, a matriz será fortemente tipado. Mas se você usá-la para armazenar caracteres, é menos certeza de que a segurança de tipo.

Consulte também

Tarefas

Acessando todos os membros de uma coleção

Conceitos

Coleções

Classes com base no modelo

Como fazer uma coleção fortemente tipada