Compartilhar via


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

Este artigo contém informações detalhadas, criadas para ajudar você a escolher uma classe de coleção para suas necessidades de determinado aplicativo.

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

  • Os recursos da forma classe: ordem, indexação e desempenho, sistema autônomo mostra a Recursos de forma da coleção tabela mais adiante neste tópico

  • Se a classe usa modelos C++

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

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

  • Se a coleção é fortemente tipado

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

  • Colunas 2 e 3 descrevem cada forma de pedidos e características de acesso.Na tabela, o termo "ordenado" significa que a ordem em que 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 Sumário.O termo "indexado" significa que os itens na coleção podem ser recuperados por um índice de inteiro, como itens em uma matriz normal.

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

  • Coluna 6 descreve se cada forma permite que elementos duplicados.

Recursos de forma da coleção

Forma

Solicitadas?

Indexado?

Inserir um elemento

Procure o elemento especificado

Elementos duplicados?

List

Sim

Não

A rápida

Lento

Sim

Matriz

Sim

Por int

Lento

Lento

Sim

MAP

Não

Por chave

A rápida

A 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 coleções de classes do MFC específicas sistema autônomo um guia para seleção.Sua escolha pode depender se a classe se baseia no modelos C++, se seus elementos podem ser serializados por meio documento serialização mecanismo, se seus elementos podem ser despejados através de mecanismo de despejar diagnóstico do MFC ou se a classe é fortemente tipado — ou seja, 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

É

fortemente tipado

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 2

Sim

Sim

CTypedPtrList

Sim

Depende 2

Sim

Sim

CTypedPtrMap

Sim

Depende 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 Serialize função; para despejo, você deve chamar explicitamente seus Dump função. You cannot use the form ar << collObj to serialize or the form dmp << collObj to dump.

2.Serializability depende do tipo de coleção subjacente.Por exemplo, se uma matriz de tipos ponteiro baseia-se em CObArray, é serializável; se baseia 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 será fortemente tipado desde que você use sistema autônomo pretendido.Por exemplo, se você armazenar bytes em um CByteArray, a matriz é fortemente tipado. Mas se você usá-lo para armazenar caracteres, a segurança de tipos é menos determinada.

Consulte também

Tarefas

Acessar todos os membros de uma coleção

Conceitos

Coleções

Classes com base em modelo

Como: Tornar uma coleção de fortemente tipado