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