Recommendations for Choosing a Collection-Klasse

Dieser Artikel enthält ausführliche Informationen, die entwickelt wurde, um eine Auflistungsklasse für eine bestimmte Anwendung auszuwählen, erfordert.

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

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

  • Ob die Klasse verwendet C++-Vorlagen

  • Gibt an, ob die Elemente in der Auflistung gespeichert werden, serialisiert werden können

  • Gibt an, ob die Elemente in der Auflistung gespeichert sind, für Diagnosen gesichert werden können

  • Gibt an, ob die Auflistung ist typsicher

In der folgenden Tabelle Auflistungs-Form-Funktionen, werden die Eigenschaften der verfügbaren Auflistung von zusammen.

  • Spalten 2 und 3 werden die Reihenfolge der einzelnen Form und greifen auf Eigenschaften.In der Tabelle wird der "geordnete" - Ausdruck, dass die Reihenfolge, in der die Elemente eingefügt und gelöscht werden, deren Reihenfolge in der Auflistung bestimmt. bedeutet nicht, dass die Elemente auf ihren Inhalt angepasst wird.Der Begriff "indizierte" bedeutet, dass die Elemente in der Auflistung durch einen ganzzahligen Index abgerufen werden können, ähnlich wie Elemente in einem typischen Array.

  • Spalten 4 und 5 werden die Leistung einer Form.In Anwendungen, die viele Einfügungen in die Auflistung einfügen, kann erfordern Geschwindigkeit besonders wichtig. Suche ist möglicherweise für andere Anwendungen Geschwindigkeit wichtiger.

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

Auflistungs-Form-Funktionen

Form

Geordnet?

Indiziert?

Fügen Sie ein Element ein

Suchen nach angegebenes Element

Doppelte Elemente?

List

Ja

Nein

Schnell

Langsam

Ja

Array

Ja

Durch int

Langsam

Langsam

Ja

Zuordnung

Nein

Der Schlüssel

Schnell

Schnell

Keine (Schlüssel) Ja (Wert)

In der folgenden Tabelle Eigenschaften von MFC-Auflistungsklassen, fasst andere wichtige Eigenschaften bestimmter MFC-Auflistungsklassen als Anleitung zur Auswahl zusammengeführt.Ihre Auswahl möglicherweise hängt davon ab, ob die Klasse basierend auf C++-Vorlagen handelt, ob die zugehörigen Elemente über Serialisierung Mechanismus Dokument MFC serialisiert werden können, ob ihre Elemente über Diagnosedump Mechanismus für MFC gesichert werden können oder ob die Klasse typsicher ist, d. h., dass Sie den Typ der Elemente, die sicherstellen können, die gespeichert werden und aus einer Auflistung auf Grundlage der Klasse abgerufen werden.

Eigenschaften von MFC-Auflistungsklassen

Klasse

Verwendet C++

Vorlagen

Kann sein

serialisiert

Kann sein

gesichert

Is

typsicher

CArray

Ja

1 Ja

1 Ja

Nein

CByteArray

Nein

Ja

Ja

3 Ja

CDWordArray

Nein

Ja

Ja

3 Ja

CList

Ja

1 Ja

1 Ja

Nein

CMap

Ja

1 Ja

1 Ja

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

3 Ja

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

3 Ja

CStringList

Nein

Ja

Ja

3 Ja

CTypedPtrArray

Ja

Hängt 2

Ja

Ja

CTypedPtrList

Ja

Hängt 2

Ja

Ja

CTypedPtrMap

Ja

Hängt 2

Ja

Ja

CUIntArray

Nein

Nein

Ja

3 Ja

CWordArray

Nein

Ja

Ja

3 Ja

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

2.Serializability hängt vom zugrunde liegenden Auflistungstyps ab.Wenn beispielsweise ein typisiertes Zeigerarray auf Grundlage CObArray ist, ist er serialisierbar. wenn auf Grundlage CPtrArray, ist es nicht serialisierbar.Im Allgemeinen können die "PTR" Klasse " nicht serialisiert werden.

3.Wenn in dieser Spalte als Ja, eine nicht auf Vorlagen basierende Auflistungsklassen zur Verfügung gestellten typsicheren ist, verwenden Sie es wie beabsichtigt.Wenn Sie z. B. in Bytes CByteArray speichern, ist das Array typsicher.Wenn Sie dieses verwenden, um Zeichen zu speichern, ist ihre Typsicherheit weniger sicher.

Siehe auch

Aufgaben

Zugreifen auf alle Member einer Auflistung

Konzepte

Auflistungen

Auf Vorlagen basierende Klassen

Gewusst wie: Führen Sie eine typsichere Auflistung