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