Dela via


Samlingar

Microsoft Foundation-klassbiblioteket tillhandahåller samlingsklasser för att hantera grupper av objekt. Dessa klasser är av två typer:

Anmärkning

Om koden redan använder icke-template-samlingsklasser kan du fortsätta att använda dem. Om du skriver nya typsäkra samlingsklasser för dina egna datatyper rekommenderar vi att du använder de nyare mallbaserade klasserna.

Samlingsformer

En samlingsklass kännetecknas av dess "form" och av typerna av dess element. Formen refererar till hur objekten organiseras och lagras av samlingen. MFC innehåller tre grundläggande samlingsformer: listor, matriser och kartor (kallas även ordlistor). Du kan välja den samlingsform som passar bäst för ditt specifika programmeringsproblem.

Var och en av de tre angivna samlingsformerna beskrivs kort senare i det här avsnittet. Om du vill jämföra funktionerna i formerna som hjälper dig att avgöra vilket som är bäst för ditt program kan du läsa Rekommendationer för att välja en samlingsklass.

  • Lista

    Listklassen innehåller en ordnad, icke-indexerad lista över element som implementeras som en dubbelt länkad lista. En lista har ett "huvud" och en "svans" och det går mycket snabbt att lägga till eller ta bort element från huvudet eller svansen, eller infoga eller ta bort element i mitten.

  • Samling

    Matrisklassen innehåller en dynamiskt storleksanpassad, ordnad och heltalsindexerad matris med objekt.

  • Karta (kallas även för en ordlista)

    En karta är en samling som associerar ett nyckelobjekt med ett värdeobjekt.

Samlingsklasserna för Template-Based

Det enklaste sättet att implementera en typsäker samling som innehåller objekt av någon typ är att använda en av de MFC-mallbaserade klasserna. Exempel på dessa klasser finns i MFC-exemplet COLLECT.

I följande tabell visas de MFC-mallbaserade samlingsklasserna.

Klasser för Samlingsmallar

Samlingsinnehåll Matriser Listor Kartor
Samlingar av objekt av vilken typ som helst CArray CList CMap
Samlingar med pekare till objekt av valfri typ CTypedPtrArray CTypedPtrList CTypedPtrMap

Samlingsklasserna baseras inte på mallar

Om ditt program redan använder MFC-icke-template-klasser kan du fortsätta att använda dem. För nya samlingar rekommenderar vi dock att du använder de mallbaserade klasserna. I följande tabell visas de MFC-samlingsklasser som inte baseras på mallar.

Icke-template-samlingsklasser

Matriser Listor Kartor
CObArray CObList CMapPtrToWord
CByteArray CPtrList CMapPtrToPtr
CDWordArray CStringList CMapStringToOb
CPtrArray CMapStringToPtr
CStringArray CMapStringToString
CWordArray CMapWordToOb
CUIntArray CMapWordToPtr

Tabellen Egenskaper för MFC-samlingsklasser i rekommendationer för att välja en samlingsklass beskriver MFC-samlingsklasserna när det gäller dessa egenskaper (förutom form):

  • Om klassen använder C++-mallar

  • Om elementen som lagras i samlingen kan serialiseras

  • Om de element som lagras i samlingen kan dumpas för diagnostik

  • Om samlingen är typsäker

Vad vill du göra

Allmänna Collection-Class uppgifter

Template-Based Collection-Class uppgifter

Åtkomst till medlemmar i en samling (Template-Based eller inte)

Se även

Begrepp
Allmänna MFC-ämnen