Compartilhar via


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

O que você deseja fazer

Tarefas das classes de coleção gerais

Tarefas das classes de coleção baseada em modelos

Acessando os membros de uma coleção (baseada em modelos ou não)

Confira também

Conceitos
Tópicos gerais do MFC