Coleções
A biblioteca Microsoft Foundation Class fornece classes de coleção para gerenciar grupos de objetos. Essas classes são de dois tipos:
Observação
Se o código já usa classes de coleção não baseadas em modelos, você pode continuar a usá-las. Se você escrever novas classes de coleção fortemente tipadas para seus tipos de dados, recomendamos que use as classes mais recentes baseadas em modelos.
Formas de coleção
Uma classe de coleção é caracterizada por sua "forma" e pelos tipos de seus elementos. Forma refere-se à maneira como os objetos são organizados e armazenados pela coleção. O MFC fornece três formas de coleção básicas: listas, matrizes e mapas (também conhecidos como dicionários). Você pode escolher a forma de coleção mais adequada para seu problema de programação específico.
As três formas de coleção fornecidas são descritas resumidamente mais adiante neste tópico. Para comparar os recursos das formas e ajudar você a decidir qual é a melhor para seu programa, consulte Recomendações para escolher uma classe de coleção.
Lista
A classe de lista fornece uma lista ordenada e não indexada de elementos, implementada como uma lista duplamente vinculada. Uma lista tem uma "cabeça" e uma "cauda", e adicionar ou remover elementos da cabeça ou da cauda, ou inserir ou excluir elementos no meio, é muito rápido.
Array
A classe de matriz fornece uma matriz de objetos com dimensionamento dinâmico, ordenada e indexada por inteiros.
Mapa (também conhecido como dicionário)
Um mapa é uma coleção que associa um objeto de chave a um objeto de valor.
Classes de coleção baseadas em modelos
A maneira mais fácil de implementar uma coleção fortemente tipada que contenha objetos de qualquer tipo é usar uma das classes baseadas em modelos do MFC. Para obter exemplos dessas classes, consulte a amostra COLLECT do MFC.
A tabela a seguir lista as classes de coleção baseadas em modelos do MFC.
Classes de coleção baseadas em modelos
Conteúdo da coleção | matrizes | Listas | Mapas |
---|---|---|---|
Coleções de objetos de qualquer tipo | CArray |
CList |
CMap |
Coleções de ponteiros para objetos de qualquer tipo | CTypedPtrArray |
CTypedPtrList |
CTypedPtrMap |
Classes de coleção não baseadas em modelos
Se o aplicativo já usa classes não baseadas em modelos do MFC, você pode continuar a usá-las. No entanto, para novas coleções, recomendamos que use as classes baseadas em modelos. A tabela a seguir lista as classes de coleção do MFC que não são baseadas em modelos.
Classes de coleção não baseadas em modelos
matrizes | Listas | Mapas |
---|---|---|
CObArray |
CObList |
CMapPtrToWord |
CByteArray |
CPtrList |
CMapPtrToPtr |
CDWordArray |
CStringList |
CMapStringToOb |
CPtrArray |
CMapStringToPtr |
|
CStringArray |
CMapStringToString |
|
CWordArray |
CMapWordToOb |
|
CUIntArray |
CMapWordToPtr |
A tabela Características das classes de coleção do MFC em Recomendações para escolher uma classe de coleção descrevem as classes de coleção do MFC com relação a essas características (além da forma):
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