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