Hilfsfunktionen für die Auflistungsklasse

Die Sammlungsklassen CMapCListund CArray die Verwendung von vorlagenbasierten globalen Hilfsfunktionen für Zwecke wie Vergleichen, Kopieren und Serialisieren von Elementen. Im Rahmen Der Implementierung von Klassen basierend auf CMap, CListund , und CArray, müssen Sie diese Funktionen bei Bedarf mit Versionen überschreiben, die auf den Typ der in Ihrer Karte, Liste oder Array gespeicherten Daten angepasst sind. Informationen zum Überschreiben von Hilfsfunktionen wie SerializeElementsz. B. finden Sie im Artikel "Sammlungen: Erstellen einer Type-Tresor-Auflistung". Beachten Sie, dass ConstructElements sie DestructElements veraltet sind.

Die Microsoft Foundation-Klassenbibliothek bietet die folgenden globalen Funktionen in afxtempl.h, um Ihre Sammlungsklassen anzupassen:

Hilfsfunktionen für die Auflistungsklasse

Name Beschreibung
CompareElements Gibt an, ob Elemente identisch sind.
CopyElements Kopiert Elemente aus einem Array in ein anderes.
DumpElements Stellt streamorientierte Diagnoseausgabe bereit.
HashKey Berechnet einen Hashschlüssel.
SerializeElements Speichert oder ruft Elemente in oder aus einem Archiv ab.

CompareElements

Direkt und indirekt von CList::FindCMap::Lookup und CMap::operator[].

template<class TYPE, class ARG_TYPE>
BOOL AFXAPI
CompareElements(
    const TYPE* pElement1,
    const ARG_TYPE* pElement2);

Parameter

TYPE
Der Typ des ersten zu vergleichenden Elements.

pElement1
Zeiger auf das erste zu vergleichende Element.

ARG_TYPE
Der Typ des zweiten zu vergleichenden Elements.

pElement2
Zeiger auf das zweite zu vergleichende Element.

Rückgabewert

Nonzero, wenn das objekt, auf das von pElement1 verwiesen wird, gleich dem Objekt ist, auf das von pElement2 verwiesen wird; andernfalls 0.

Hinweise

Die CMap Aufrufe verwenden die CMap Vorlagenparameter KEY und ARG_KEY.

Die Standardimplementierung gibt das Ergebnis des Vergleichs von *pElement1 und *pElement2 zurück. Überschreiben Sie diese Funktion so, dass sie die Elemente auf eine Weise vergleicht, die für Ihre Anwendung geeignet ist.

Die C++-Sprache definiert den Vergleichsoperator ( ==) für einfache Typen (char, int, floatusw.), definiert jedoch keinen Vergleichsoperator für Klassen und Strukturen. Wenn Sie eine der verwendeten Auflistungsklassen verwenden CompareElements oder instanziieren möchten, müssen Sie entweder den Vergleichsoperator oder die Überladung CompareElements mit einer Version definieren, die geeignete Werte zurückgibt.

Anforderungen

Header: afxtempl.h

CopyElements

Diese Funktion wird direkt von CArray::Append und CArray::Copy aufgerufen.

template<class TYPE>
void AFXAPI CopyElements(
    TYPE* pDest,
    const TYPE* pSrc,
    INT_PTR nCount);

Parameter

TYPE
Vorlagenparameter, der den Typ der zu kopierenden Elemente angibt.

pDest
Zeigen Sie auf das Ziel, an dem die Elemente kopiert werden.

pSrc
Zeigen Sie auf die Quelle der zu kopierenden Elemente.

nCount
Anzahl der zu kopierenden Elemente.

Hinweise

Die Standardimplementierung verwendet den einfachen Zuordnungsoperator ( = ) zum Ausführen des Kopiervorgangs. Wenn der kopierte Typ keinen überladenen Operator= aufweist, führt die Standardimplementierung eine bitweise Kopie aus.

Informationen zur Implementierung dieser und anderer Hilfsfunktionen finden Sie im Artikel "Sammlungen: Erstellen einer Type-Tresor-Auflistung".

Anforderungen

Header afxtempl.h

DumpElements

Stellt streamorientierte Diagnoseausgabe in Textform für die Elemente Ihrer Auflistung bereit, wenn sie überschrieben werden.

template<class TYPE>
void  AFXAPI DumpElements(
    CDumpContext& dc,
    const TYPE* pElements,
    INT_PTR nCount);

Parameter

dc
Dumpkontext für Dumpingelemente.

TYPE
Vorlagenparameter, der den Typ der Elemente angibt.

pElements
Zeigen Sie auf die elemente, die gedumpt werden sollen.

nCount
Anzahl der elemente, die gedumpt werden sollen.

Hinweise

Die CArray::Dump, CList::Dumpund CMap::Dump Funktionen rufen dies auf, wenn die Tiefe des Dumps größer als 0 ist.

Bei der Standardimplementierung wird keine Aktion ausgeführt. Wenn die Elemente Ihrer Auflistung abgeleitet CObjectwerden, durchläuft ihre Außerkraftsetzung in der Regel die Elemente der Sammlung, wobei jedes Element wiederum aufgerufen Dump wird.

Anforderungen

Header afxtempl.h

HashKey

Berechnet einen Hashwert für den angegebenen Schlüssel.

template<class ARG_KEY>
AFX_INLINE UINT AFXAPI HashKey(ARG_KEY  key);

Parameter

ARG_KEY
Vorlagenparameter, der den Datentyp angibt, der für den Zugriff auf Zuordnungsschlüssel verwendet wird.

key
Der Schlüssel, dessen Hashwert berechnet werden soll.

Rückgabewert

Der Hashwert des Schlüssels.

Hinweise

Diese Funktion wird direkt und indirekt von CMap::RemoveKey und CMap::operator[].CMap::Lookup

Die Standardimplementierung erstellt einen Hashwert, indem der Schlüssel um vier Positionen nach rechts verschoben wird. Überschreiben Sie diese Funktion so, dass sie Hashwerte zurückgibt, die für Ihre Anwendung geeignet sind.

Beispiel

template <> UINT AFXAPI HashKey(unsigned __int64 key)
{
   // Generate the hash value by XORing the lower 32 bits of the number
   // with the upper 32 bits
   return(UINT(key) ^ UINT(key >> 32));
}

Anforderungen

Header afxtempl.h

SerializeElements

CArray, CList und CMap rufen diese Funktion auf, um Elemente zu serialisieren.

template<class TYPE>
void AFXAPI SerializeElements(CArchive& ar, TYPE* pElements, INT_PTR nCount);

Parameter

TYPE
Vorlagenparameter, der den Typ der Elemente angibt.

Ar
Ein Archivobjekt zum Archivieren in oder aus.

pElements
Zeigen Sie auf die archivierten Elemente.

nCount
Anzahl der archivierten Elemente

Hinweise

Die Standardimplementierung führt ein bitweises Lesen oder Schreiben durch.

Informationen zur Implementierung dieser und anderer Hilfsfunktionen finden Sie im Artikel "Sammlungen: Erstellen einer Type-Tresor-Auflistung".

Beispiel

Siehe das Beispiel in den Artikelsammlungen: Erstellen einer Type-Tresor-Auflistung.

Anforderungen

Header afxtempl.h

Siehe auch

Makros und Globalen
CMap-Klasse
CList-Klasse
CArray-Klasse