Compartilhar via


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

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

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

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

  • Se a classe usa modelos C++

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

  • Os elementos armazenados na coleção podem ser despejados para diagnóstico

  • Se a coleção é tipo seguro

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

  • Colunas 2 e 3 descrevem a ordenação de cada forma e características de acesso.Na tabela, o termo "pedido" significa que a ordem de itens são inseridas e excluídas determina a ordem na coleção; Isso não significa que os itens são classificados em seu conteúdo.O termo "indexado" significa que os itens na coleção podem ser recuperados por um índice inteiro, bem como itens de uma matriz normal.

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

  • Coluna 6 descreve se cada forma permite elementos duplicados.

Recursos de forma da coleção

Forma

Encomendado?

Indexado?

Inserir um elemento

Procure o elemento especificado

Elementos duplicados?

List

Sim

Não

Rápida

Diminuir

Sim

Matriz

Sim

Por int

Diminuir

Diminuir

Sim

Mapa

Não

Por chave

Rápida

Rápida

Nenhum (chaves) Sim (valores)

A tabela a seguir, Características das Classes de coleção do MFC, resume outras características importantes de classes de coleção MFC específicos como um guia para seleção.Sua escolha pode depender se a classe é baseada em modelos C++, se seus elementos podem ser serializados por meio de documento do MFC serialização mecanismo, seus elementos podem ser despejados por meio de mecanismo de despejar diagnóstico do MFC ou se a classe é tipo seguro — isto é, se você pode garantir o tipo de elementos armazenados no e recuperados de uma coleção com base na classe.

Características das Classes de coleção do MFC

Classe

Usa C++

modelos

Pode ser

serializado

Pode ser

despejados

Is

tipo seguro

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

Depende de 2

Sim

Sim

CTypedPtrList

Sim

Depende de 2

Sim

Sim

CTypedPtrMap

Sim

Depende de 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 o objeto da coleção Serialize função; Despejar, você deve chamar explicitamente sua Dump função.Você não pode usar o formulário ar << collObj para serializar ou o formulário dmp<< collObj despejar.

2.Capacidade de serialização depende do tipo de coleção subjacente.Por exemplo, se uma matriz ponteiro digitado é baseada em CObArray, é serializável; se baseia em CPtrArray, não é serializável.Em geral, as classes "Ptr" não podem ser serializadas.

3.Se marcado Sim nesta coluna, uma classe de coleção nontemplate é tipo seguro desde que você use como pretendido.Por exemplo, se você armazenar bytes em um CByteArray, a matriz é de tipo seguro.Mas se você usá-lo para armazenar caracteres, segurança de tipos é menos certo.

Consulte também

Tarefas

Acessar todos os membros de uma coleção

Conceitos

Coleções

Classes de modelo

Como: tornar uma coleção de tipo seguro