Freigeben über


Empfehlungen für die Auswahl einer Sammlungsklasse

Dieser Artikel enthält ausführliche Informationen zur Auswahl einer Auflistungsklasse für Ihre besonderen Anwendungsanforderungen.

Ihre Wahl einer Auflistungsklasse hängt von mehreren Faktoren ab, einschließlich:

  • Features der Klassenform: Reihenfolge, Indizierung und Leistung, wie in der Tabelle Auflistungsformfeatures weiter unten in diesem Thema gezeigt

  • ob die Klasse C++-Vorlagen verwendet

  • ob die in der Auflistung gespeicherten Elemente serialisiert werden können

  • ob die in der Auflistung gespeicherten Elemente zur Diagnose gesichert werden können

  • ob die Auflistung typsicher ist

Die folgende Tabelle, Auflistungsformfeatures, fasst die Merkmale der verfügbaren Auflistungsformen zusammen.

  • In Spalten 2 und 3 werden die Anordnungs- und Zugriffsmerkmale jeder Form beschrieben. In der Tabelle bedeutet der Ausdruck „geordnet“, dass die Reihenfolge, in der Elemente eingefügt und gelöscht werden, deren Reihenfolge in der Auflistung bestimmt. Es bedeutet nicht, dass die Elemente anhand ihres Inhalts sortiert werden. Der Begriff „indiziert“ bedeutet, dass die Elemente in der Auflistung über einen Ganzzahlenindex, ähnlich wie die Elemente in einem normalen Array, abgerufen werden können.

  • In Spalten 4 und 5 wird die Leistung jeder Form beschrieben. In Anwendungen, die viele Einfügungen in die Auflistung erfordern, ist möglicherweise die Einfügungsgeschwindigkeit besonders wichtig; für andere Programme könnte die Suchgeschwindigkeit wichtiger sein.

  • In Spalte 6 wird beschrieben, ob die einzelnen Formen doppelte Elemente zulassen.

Auflistungsformfeatures

Form Bestellt Indiziert Einfügen eines Elements Suchen nach einem angegebenen Element Doppelte Elemente
Liste Ja Nein Schnell Langsam Ja
Array Ja Nach Ganzzahl Langsam Langsam Ja
Plan Nein Nach Schlüssel Schnell Schnell Nein (Schlüssel) Ja (Werte)

In der folgenden Tabelle, Merkmale von MFC-Auflistungsklassen, werden weitere wichtige Merkmale bestimmter MFC-Auflistungsklassen als Anleitung zur Auswahl zusammengefasst. Ihre Wahl kann davon abhängen, ob die Klasse auf C++-Vorlagen basiert, ihre Elemente über den MFC-Mechanismus zur Dokumentserialisierung serialisiert werden können, die Elemente über den MFC-Diagnosesicherungsmechanismus gesichert werden können oder die Klasse typsicher ist – d. h., ob Sie den Typ der Elemente gewährleisten können, die in einer auf der Klasse basierenden Auflistung gespeichert und daraus abgerufen werden.

Merkmale von MFC-Auflistungsklassen

Klasse Verwendet C++-

Vorlagen
Ist

serialisiert
Ist

gesichert
Is

typsicher
CArray Ja Ja1 Ja1 Nein
CByteArray Nein Ja Ja Ja3
CDWordArray Nein Ja Ja Ja3
CList Ja Ja1 Ja1 Nein
CMap Ja Ja1 Ja1 Nein
CMapPtrToPtr Nr. Nein Ja Nein
CMapPtrToWord Nr. Nein Ja Nein
CMapStringToOb Nein Ja Ja Nein
CMapStringToPtr Nr. Nein Ja Nein
CMapStringToString Nein Ja Ja Ja3
CMapWordToOb Nein Ja Ja Nein
CMapWordToPtr Nr. Nein Ja Nein
CObArray Nein Ja Ja Nein
CObList Nein Ja Ja Nein
CPtrArray Nr. Nein Ja Nein
CPtrList Nr. Nein Ja Nein
CStringArray Nein Ja Ja Ja3
CStringList Nein Ja Ja Ja3
CTypedPtrArray Ja Je nachdem 2 Ja Ja
CTypedPtrList Ja Je nachdem 2 Ja Ja
CTypedPtrMap Ja Je nachdem 2 Ja Ja
CUIntArray Nein Nein Ja Ja3
CWordArray Nein Ja Ja Ja3
  1. Zum Serialisieren müssen Sie explizit die Serialize-Funktion des Auflistungsobjekts aufrufen; zum Sichern müssen Sie explizit seine Dump-Funktion aufrufen. Sie können nicht die Form ar << collObj zum Serialisieren oder die Form dmp<< collObj zum Sichern verwenden.

  2. Serialisierbarkeit hängt vom zugrunde liegenden Auflistungstyp ab. Wenn z. B. ein typisiertes Zeigerarray auf CObArraybasiert, ist es serialisierbar; auf CPtrArraybasierend ist es nicht serialisierbar. Im Allgemeinen können die „Ptr“-Klassen nicht serialisiert werden.

  3. Wenn in dieser Spalte „Ja“ markiert ist, ist eine Auflistungsklasse ohne Vorlage typsicher, sofern Sie sie wie vorgesehen verwenden. Wenn Sie z. B. Bytes in einem CByteArrayspeichern, ist das Array typsicher. Aber wenn Sie es zum Speichern von Zeichen verwenden, ist die Typsicherheit nicht so sicher.

Siehe auch

Sammlungen
Vorlagenbasierte Klassen
Vorgehensweise: Erstellen einer typsicheren Auflistung
Zugreifen auf alle Elemente einer Auflistung