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