Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält detaillierte Informationen, die Ihnen bei der Auswahl einer Sammlungsklasse für Ihre spezifischen Anwendungsanforderungen helfen.
Die Auswahl einer Sammlungsklasse hängt von einer Reihe von Faktoren ab, darunter:
Die Features des Klassen-Shapes: Reihenfolge, Indizierung und Leistung, wie in der Tabelle " Sammlungs-Shape-Features " weiter unten in diesem Thema gezeigt
Gibt an, ob die Klasse C++-Vorlagen verwendet
Gibt an, ob die in der Sammlung gespeicherten Elemente serialisiert werden können.
Gibt an, ob die in der Auflistung gespeicherten Elemente für die Diagnose abgebilden werden können.
Gibt an, ob die Sammlung typsicher ist.
Die folgende Tabelle, Sammlungs-Shape-Features, fasst die Merkmale der verfügbaren Auflistungs-Shapes zusammen.
In den Spalten 2 und 3 werden die Sortier- und Zugriffsmerkmale der einzelnen Shapes beschrieben. In der Tabelle bedeutet der Begriff "sortiert", dass die Reihenfolge, in der Elemente eingefügt und gelöscht werden, ihre Reihenfolge in der Sammlung bestimmt; es bedeutet nicht, dass die Elemente nach ihren Inhalten sortiert werden. Der Begriff "indiziert" bedeutet, dass die Elemente in der Auflistung durch einen ganzzahligen Index abgerufen werden können, ähnlich wie Elemente in einem typischen Array.
Die Spalten 4 und 5 beschreiben die Leistung der einzelnen Shapes. Bei Anwendungen, die viele Einfügungen in die Sammlung erfordern, kann die Einfügegeschwindigkeit besonders wichtig sein; für andere Anwendungen kann die Nachschlagegeschwindigkeit wichtiger sein.
In Spalte 6 wird beschrieben, ob jede Form doppelte Elemente zulässt.
Sammlungs-Shape-Features
| Gestalt | Bestellt | Indiziert | Einfügen eines Elements | Nach angegebenem Element suchen | Doppelte Elemente |
|---|---|---|---|---|---|
| Liste | Ja | Nein | Schnell | Langsam | Ja |
| Anordnung | Ja | Byt | Langsam | Langsam | Ja |
| Landkarte | Nein | Nach Taste | Schnell | Schnell | Nein (Schlüssel) Ja (Werte) |
In der folgenden Tabelle werden die Merkmale von MFC-Auflistungsklassen als Leitfaden für die Auswahl weitere wichtige Merkmale bestimmter MFC-Auflistungsklassen zusammengefasst. Ihre Wahl hängt möglicherweise davon ab, ob die Klasse auf C++-Vorlagen basiert, ob ihre Elemente über den Dokument serialisierungsmechanismus von MFC serialisiert werden können, ob ihre Elemente über den Diagnosedumpingmechanismus von MFC gedumpt werden können oder ob die Klasse typsicher ist – d. h., ob Sie den Typ der elemente garantieren können, die in einer Sammlung basierend auf der Klasse gespeichert und abgerufen werden können.
Merkmale von MFC-Auflistungsklassen
| Klasse | Verwendet C++ Schablonen |
Kann sein Serialisierten |
Kann sein gedumpt |
Ist 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 von 2 ab | Ja | Ja |
CTypedPtrList |
Ja | Hängt von 2 ab | Ja | Ja |
CTypedPtrMap |
Ja | Hängt von 2 ab | Ja | Ja |
CUIntArray |
Nein | Nein | Ja | Ja 3 |
CWordArray |
Nein | Ja | Ja | Ja 3 |
Um die Serialisierung zu serialisieren, müssen Sie die Funktion des Auflistungsobjekts
Serializeexplizit aufrufen. Zum Abbilden müssen Sie seineDumpFunktion explizit aufrufen. Sie können das Formularar << collObjnicht zum Serialisieren oder zum Abbilden des Formularsdmp<< collObjverwenden.Die Serialisierbarkeit hängt vom zugrunde liegenden Sammlungstyp ab. Wenn z. B. ein typisierter Zeigerarray basiert
CObArray, ist es serialisierbar; wenn es aufCPtrArrayder Grundlage erfolgt, ist es nicht serialisierbar. Im Allgemeinen können die Ptr-Klassen nicht serialisiert werden.Wenn in dieser Spalte "Ja" markiert ist, ist eine Nichtvorlagensammlungsklasse typsicher, sofern Sie sie wie vorgesehen verwenden. Wenn Sie beispielsweise Bytes in einem
CByteArraySpeicher speichern, ist das Array typsicher. Wenn Sie es jedoch zum Speichern von Zeichen verwenden, ist die Typsicherheit weniger sicher.
Siehe auch
Auflistungen
Template-Based Klassen
How to: Make a Type-Safe Collection
Zugreifen auf alle Elemente einer Auflistung