Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua sendo suportada. No entanto, não estamos mais adicionando recursos ou atualizando a documentaçã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íficas.
Sua escolha de uma classe de coleção depende de vários fatores, incluindo:
Os recursos da forma da classe: ordem, indexação e desempenho, conforme mostrado na tabela Recursos da Forma da Coleção 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 tipada
A tabela a seguir, Características das Formas de Coleção, resume as características das formas disponíveis.
As colunas 2 e 3 descrevem as características de ordenação e acesso de cada forma. Na tabela, o termo "ordenado" significa que a ordem na qual os itens são inseridos e excluídos determina sua ordem na coleção; isso não significa que os itens sejam classificados em seu conteúdo. O termo "indexado" significa que os itens na coleção podem ser recuperados por um índice inteiro, assim como itens em uma matriz típica.
As colunas 4 e 5 descrevem o desempenho de cada forma. Em aplicativos que exigem 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.
A coluna 6 descreve se cada forma permite elementos duplicados.
Recursos de forma da coleção
| Forma | Pedido | Indexado | Inserir um elemento | Pesquisar elemento especificado | Elementos duplicados |
|---|---|---|---|---|---|
| Lista | Sim | Não | Rápido | Lento | Sim |
| Matriz | Sim | Por int | Lento | Lento | Sim |
| Mapa | Não | Por chave | Rápido | Rápido | Não (chaves) Sim (valores) |
A tabela a seguir, Características das Classes de Coleção MFC, resume outras características importantes de classes de coleção MFC específicas como um guia de seleção. Sua escolha pode depender se a classe é baseada em modelos C++, se seus elementos podem ser serializados por meio do mecanismo de serialização de documentos do MFC, se seus elementos podem ser despejados por meio do mecanismo de despejo de diagnóstico do MFC ou se a classe é segura por tipo , ou seja, se você pode garantir o tipo de elementos armazenados e recuperados de uma coleção com base na classe.
Características das classes de coleção MFC
| Classe | Usa C++ Modelos |
Pode ser serializado |
Pode ser despejada |
É de tipos seguros |
|---|---|---|---|---|
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 |
Para serializar, você deve chamar explicitamente a função
Serializedo objeto de coleção; para despejar, você deve chamar explicitamente sua funçãoDump. Você não pode usar a formaar << collObjpara serializar ou a formadmp<< collObjpara despejar.A serializabilidade depende do tipo de coleção subjacente. Por exemplo, se uma matriz de ponteiros tipada for baseada em
CObArray, ela é serializável; se for baseada emCPtrArray, não é serializável. Em geral, as classes "Ptr" não podem ser serializadas.Se estiver marcada como Sim nesta coluna, uma classe de coleção não-template será segura em termos de tipo, desde que você a use conforme o esperado. Por exemplo, se você armazenar bytes em um
CByteArray, a matriz será fortemente tipada. Mas se você usá-lo para armazenar caracteres, é menos provável que ela será fortemente tipada.
Consulte também
Coleções
Classes com base no modelo
Como criar uma coleção de Type-Safe
Acessando todos os membros de uma coleção