Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Samlingsklasserna CMap, CListoch CArray använder mallade globala hjälpfunktioner för sådana ändamål som att jämföra, kopiera och serialisera element. Som en del av implementeringen av klasser baserat på CMap, CListoch CArraymåste du åsidosätta dessa funktioner efter behov med versioner som är skräddarsydda för den typ av data som lagras i din karta, lista eller matris. Information om övergripande hjälpfunktioner som SerializeElementsfinns i artikeln Samlingar: Skapa en Type-Safe-samling. Observera att ConstructElements och DestructElements har blivit inaktuella.
Microsoft Foundation-klassbiblioteket innehåller följande globala funktioner i afxtempl.h som hjälper dig att anpassa dina samlingsklasser:
Hjälp för samlingsklass
| Namn | Beskrivning |
|---|---|
| CompareElements | Anger om elementen är samma. |
| CopyElements | Kopierar element från en matris till en annan. |
| DumpElements | Tillhandahåller strömorienterade diagnostikutdata. |
| HashKey | Beräknar en hash-nyckel. |
| SerializeElements | Lagrar eller hämtar element till eller från ett arkiv. |
CompareElements
Anropas direkt av CList::Find och indirekt av CMap::Lookup och CMap::operator[].
template<class TYPE, class ARG_TYPE>
BOOL AFXAPI
CompareElements(
const TYPE* pElement1,
const ARG_TYPE* pElement2);
Parameterar
TYP
Typen av det första element som ska jämföras.
pElement1
Pekare till det första element som ska jämföras.
ARG_TYPE
Typen av det andra element som ska jämföras.
pElement2
Pekare till det andra elementet som ska jämföras.
Returvärde
Nonzero om objektet som pekas på av pElement1 är lika med det objekt som pekas på av pElement2; annars 0.
Anmärkningar
Anropen CMapCMap använder mallparametrarna KEY och ARG_KEY.
Standardimplementeringen returnerar resultatet av jämförelsen av *pElement1 och *pElement2. Åsidosätt den här funktionen så att den jämför elementen på ett sätt som passar ditt program.
C++-språket definierar jämförelseoperatorn (==) för enkla typer (char, int, floatoch så vidare) men definierar inte en jämförelseoperator för klasser och strukturer. Om du vill använda CompareElements eller instansiera någon av de samlingsklasser som använder den måste du antingen definiera jämförelseoperatorn eller överlagra CompareElements med en version som returnerar lämpliga värden.
Kravspecifikation
Rubrik: afxtempl.h
CopyElements
Den här funktionen anropas direkt av CArray::Append och CArray::Copy.
template<class TYPE>
void AFXAPI CopyElements(
TYPE* pDest,
const TYPE* pSrc,
INT_PTR nCount);
Parameterar
TYP
Mallparameter som anger vilken typ av element som ska kopieras.
pDest
Pekare till målet där elementen ska kopieras.
pSrc
Pekare till källan för de element som ska kopieras.
nCount
Antal element som ska kopieras.
Anmärkningar
Standardimplementeringen använder den enkla tilldelningsoperatorn ( = ) för att utföra kopieringsåtgärden. Om den typ som kopieras inte har en överbelastad operator=, utför standardimplementeringen en bitvis kopia.
Information om hur du implementerar den här och andra hjälpfunktioner finns i artikeln Samlingar: Skapa en Type-Safe-samling.
Kravspecifikation
Sidhuvud afxtempl.h
DumpElements
Tillhandahåller strömorienterade diagnostiska utdata i textform för elementen i samlingen när de åsidosätts.
template<class TYPE>
void AFXAPI DumpElements(
CDumpContext& dc,
const TYPE* pElements,
INT_PTR nCount);
Parameterar
domänkontrollant
Dumpkontext för dumpningselement.
TYP
Mallparameter som anger typ av element.
pElements
Pekare till de element som ska dumpas.
nCount
Antal element som ska dumpas.
Anmärkningar
Funktionerna CArray::Dump, CList::Dumpoch CMap::Dump anropar detta om dumpens djup är större än 0.
Standardimplementeringen gör ingenting. Om elementen i samlingen härleds från CObjectitererar åsidosättningen vanligtvis genom samlingens element och anropar Dump för varje element i tur och ordning.
Kravspecifikation
Sidhuvud afxtempl.h
HashKey
Beräknar ett hash-värde för den angivna nyckeln.
template<class ARG_KEY>
AFX_INLINE UINT AFXAPI HashKey(ARG_KEY key);
Parameterar
ARG_KEY
Mallparameter som anger den datatyp som används för att komma åt kartnycklar.
nyckel
Nyckeln vars hashvärde ska beräknas.
Returvärde
Nyckelns hashvärde.
Anmärkningar
Den här funktionen anropas direkt av CMap::RemoveKey och indirekt av CMap::Lookup och CMap::operator[].
Standardimplementeringen skapar ett hash-värde genom att flytta nyckeln åt höger med fyra positioner. Åsidosätt den här funktionen så att den returnerar hash-värden som är lämpliga för ditt program.
Exempel
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));
}
Kravspecifikation
Sidhuvud afxtempl.h
SerializeElements
CArray, CList och CMap anropar den här funktionen för att serialisera element.
template<class TYPE>
void AFXAPI SerializeElements(CArchive& ar, TYPE* pElements, INT_PTR nCount);
Parameterar
TYP
Mallparameter som anger typ av element.
Ar
Ett arkivobjekt att arkivera till eller från.
pElements
Pekare mot de element som arkiveras.
nCount
Antal element som arkiveras
Anmärkningar
Standardimplementeringen läser eller skriver lite.
Information om hur du implementerar den här och andra hjälpfunktioner finns i artikeln Samlingar: Skapa en Type-Safe-samling.
Exempel
Se exemplet i artikeln Samlingar: Skapa en Type-Safe samling.
Kravspecifikation
Sidhuvud afxtempl.h