Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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