Hilfsfunktionen für die Auflistungsklasse
Die Sammlungsklassen CMap
CList
und 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
, CList
und , 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 SerializeElements
z. B. finden Sie im Artikel "Sammlungen: Erstellen einer typsicheren 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::Find
CMap::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
, float
usw.), 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 typsicheren 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::Dump
und 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 CObject
werden, 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 typsicheren Auflistung".
Beispiel
Sehen Sie sich das Beispiel in den Artikelsammlungen an: Erstellen einer typsicheren Auflistung.
Anforderungen
Header afxtempl.h