Freigeben über


Empfehlungen für die Auswahl einer Sammlungsklasse

Dieser Artikel enthält detaillierte Informationen, die entworfen wird, um Ihnen helfen, eine Auflistungsklasse für Ihre spezifischen Anwendung auszuwählen.

Die Auswahl einer Auflistungsklasse hängt von mehreren Faktoren ab und enthält:

  • Die Funktionen der Klassenform: Reihenfolge, die Indizierung und Leistung, wie in der Tabelle Auflistungs-Form-Funktionen weiter unten in diesem Thema

  • Ob der Klasse C++-Vorlagen verwendet

  • Ob die Elemente, die in der Auflistung gespeichert werden, serialisiert werden können

  • Ob die Elemente, die in der Auflistung gespeichert werden, für Diagnose gesichert werden können

  • Ob die Auflistung ist typsicher

Die folgende Tabelle, Auflistungs-Form-Funktionen, werden die Eigenschaften der verfügbaren Auflistungsformen zusammen.

  • Spalten 2 und 3 beschreiben die Reihenfolge einer Form und greifen auf Eigenschaften zu. In der Tabelle "bestellte" der Begriff bedeutet, dass die Reihenfolge, in der Elemente eingefügt und gelöscht werden, deren Reihenfolge in der Auflistung spezifisch; Dies bedeutet nicht, dass die Elemente auf ihren Inhalt sortiert werden. Der Begriff "indizierte" bedeutet, dass die Elemente in der Auflistung mit einem ganzzahligen Index abgerufen werden können, so wie Elemente in einem typischen Array.

  • Spalten 4 und 5 beschreiben die Leistung jeder Form. In Anwendungen, die viele Einfügungen in die Auflistung benötigen, kann Einfügungsgeschwindigkeit besonders wichtig; für andere Anwendungen ist möglicherweise Suchengeschwindigkeit Bedeutung.

  • Spalte 6 beschreibt, ob jeder Form doppelte Elemente zulässig.

Auflistungs-Form-Funktionen

Form

Testreihe?

Indiziert?

Fügen Sie ein Element

Suchen von angegebenen Element

Doppelte Elemente?

List

ja

nein

Fast

Langsam

ja

Array

ja

Durch int

Langsam

Langsam

ja

Zuordnung

nein

Durch Schlüssel

Fast

Fast

Keine (Schlüssel) Ja (Werten)

Die folgende Tabelle, MFC-Auflistungsklassen von Eigenschaften, sind andere wichtige Eigenschaften bestimmter MFC-Auflistungsklassen als Anleitung zur Auswahl zusammen. Ihre Auswahl hängt möglicherweise davon ab, ob die Klasse auf Grundlage C++-Vorlagen ist, ob dessen Elemente über MFC Dokument- Serialisierung Mechanismus serialisiert werden können, ob dessen Elemente über Diagnosedumpmechanismus MFC gesichert werden können oder ob die Klasse werden - d. h, ob Sie den Typ von den Elementen sicherstellen, die gespeichert werden und aus einer Auflistung auf Grundlage der Klasse abgerufen werden.

MFC-Auflistungsklassen von Eigenschaften

Klasse

Verwendung C++

Vorlagen

Kann sein

serialisiert

Kann sein

gesichert

Is

typsicher

CArray

ja

ja 1

ja 1

nein

CByteArray

nein

ja

ja

ja 3

CDWordArray

nein

ja

ja

ja 3

CList

ja

ja 1

ja 1

nein

CMap

ja

ja 1

ja 1

nein

CMapPtrToPtr

nein

nein

ja

nein

CMapPtrToWord

nein

nein

ja

nein

CMapStringToOb

nein

ja

ja

nein

CMapStringToPtr

nein

nein

ja

nein

CMapStringToString

nein

ja

ja

ja 3

CMapWordToOb

nein

ja

ja

nein

CMapWordToPtr

nein

nein

ja

nein

CObArray

nein

ja

ja

nein

CObList

nein

ja

ja

nein

CPtrArray

nein

nein

ja

nein

CPtrList

nein

nein

ja

nein

CStringArray

nein

ja

ja

ja 3

CStringList

nein

ja

ja

ja 3

CTypedPtrArray

ja

Hängt 2 ab

ja

ja

CTypedPtrList

ja

Hängt 2 ab

ja

ja

CTypedPtrMap

ja

Hängt 2 ab

ja

ja

CUIntArray

nein

nein

ja

ja 3

CWordArray

nein

ja

ja

ja 3

1. Um zu serialisieren, müssen Sie die Serialize-Funktion des Auflistungsobjekts explizit aufrufen; um zu sichern, müssen Sie seine Dump-Funktion explizit aufrufen. Sie können das Formular ar << collObj, um zu serialisieren oder das Format dmp << collObj nicht verwenden, zu speichern.

2. Serializability hängt vom zugrunde liegenden Auflistungstyp ab. Ein typisiertes Zeigerarray auf CObArray basiert, ist das Objekt serialisierbar; Wenn auf CPtrArray basieren, ist es nicht serialisierbar. Im Allgemeinen können die "PTR" Klassen nicht serialisiert werden.

3. Wenn das hervorgehobene Ja in dieser Spalte, eine nicht auf Vorlagen basierende Auflistungsklasse bereitgestellt typsicheres ist, verwenden Sie es, wie beabsichtigt. Wenn Sie in Bytes CByteArray speichern, wird das Array typsicher. Aber, falls Sie es verwenden, um Zeichen zu speichern, ist dessen Typsicherheit weniger sicher.

Siehe auch

Aufgaben

Zugreifen auf alle Elemente einer Auflistung

Konzepte

Auflistungen

Vorlagenbasierte Klassen

Gewusst wie: Erstellen einer typsicheren Auflistung