Pomocnicy klasy kolekcji
Klasy CMap
kolekcji , CList
i CArray
używają szablonów globalnych funkcji pomocnika do takich celów, jak porównywanie, kopiowanie i serializowanie elementów. W ramach implementacji klas opartych na CMap
elementach , CList
i i CArray
należy zastąpić te funkcje w razie potrzeby wersjami dostosowanymi do typu danych przechowywanych na mapie, liście lub tablicy. Aby uzyskać informacje na temat zastępowania funkcji pomocnika, takich jak SerializeElements
, zobacz artykuł Kolekcje: Jak utworzyć bezpieczną kolekcję typów. Należy pamiętać, że ConstructElements
i DestructElements
zostały przestarzałe.
Biblioteka klas programu Microsoft Foundation udostępnia następujące funkcje globalne w pliku afxtempl.h, które ułatwiają dostosowywanie klas kolekcji:
Pomocnicy klasy kolekcji
Nazwa/nazwisko | opis |
---|---|
CompareElements | Wskazuje, czy elementy są takie same. |
CopyElements | Kopiuje elementy z jednej tablicy do innej. |
DumpElements | Udostępnia dane wyjściowe diagnostyczne zorientowane na strumień. |
HashKey | Oblicza klucz skrótu. |
Serializowanie elementów | Przechowuje lub pobiera elementy do lub z archiwum. |
CompareElements
Wywoływane bezpośrednio przez i pośrednio przez CList::Find
CMap::Lookup
i CMap::operator[]
.
template<class TYPE, class ARG_TYPE>
BOOL AFXAPI
CompareElements(
const TYPE* pElement1,
const ARG_TYPE* pElement2);
Parametry
TYP
Typ pierwszego elementu do porównania.
pElement1
Wskaźnik do pierwszego elementu do porównania.
ARG_TYPE
Typ drugiego elementu do porównania.
pElement2
Wskaźnik do drugiego elementu do porównania.
Wartość zwracana
Nonzero, jeśli obiekt wskazywany przez element pElement1 jest równy obiektowi wskazywane przez pElement2; w przeciwnym razie 0.
Uwagi
Wywołania CMap
używają parametrów szablonu CMap
KEY i ARG_KEY.
Domyślna implementacja zwraca wynik porównania *pElement1 i *pElement2. Zastąpi tę funkcję tak, aby porównała elementy w sposób odpowiedni dla aplikacji.
Język C++ definiuje operator porównania ( ==
) dla typów prostych (char
, int
, float
itd.), ale nie definiuje operatora porównania dla klas i struktur. Jeśli chcesz użyć polecenia CompareElements
lub utworzyć wystąpienie jednej z klas kolekcji, które go używają, musisz zdefiniować operator porównania lub przeciążyć CompareElements
wersję zwracającą odpowiednie wartości.
Wymagania
Nagłówek: afxtempl.h
CopyElements
Ta funkcja jest wywoływana bezpośrednio przez CArray ::Append i CArray::Copy.
template<class TYPE>
void AFXAPI CopyElements(
TYPE* pDest,
const TYPE* pSrc,
INT_PTR nCount);
Parametry
TYP
Parametr szablonu określający typ elementów do skopiowania.
PDest
Wskaźnik do miejsca docelowego, w którym zostaną skopiowane elementy.
pSrc
Wskaźnik do źródła elementów do skopiowania.
nCount
Liczba elementów do skopiowania.
Uwagi
Domyślna implementacja używa prostego operatora przypisania ( = ) do wykonania operacji kopiowania. Jeśli skopiowany typ nie ma przeciążonego operatora=, domyślna implementacja wykonuje kopię bitową.
Aby uzyskać informacje na temat implementowania tych i innych funkcji pomocnika, zobacz artykuł Kolekcje: Jak utworzyć bezpieczną kolekcję typu.
Wymagania
Nagłówek afxtempl.h
DumpElements
Udostępnia dane wyjściowe diagnostyczne zorientowane na strumień w postaci tekstowej dla elementów kolekcji podczas zastępowania.
template<class TYPE>
void AFXAPI DumpElements(
CDumpContext& dc,
const TYPE* pElements,
INT_PTR nCount);
Parametry
Dc
Kontekst zrzutu dla elementów dumpingu.
TYP
Parametr szablonu określający typ elementów.
pElements
Wskaźnik do elementów, które mają być po cenach dumpingowych.
nCount
Liczba elementów do porzucania.
Uwagi
Funkcja CArray::Dump
, CList::Dump
i CMap::Dump
wywołuje to, jeśli głębokość zrzutu jest większa niż 0.
Domyślna implementacja nic nie robi. Jeśli elementy kolekcji pochodzą z CObject
elementu , przesłonięcia zwykle iterują elementy kolekcji, wywołując Dump
poszczególne elementy z kolei.
Wymagania
Nagłówek afxtempl.h
HashKey
Oblicza wartość skrótu dla danego klucza.
template<class ARG_KEY>
AFX_INLINE UINT AFXAPI HashKey(ARG_KEY key);
Parametry
ARG_KEY
Parametr szablonu określający typ danych używany do uzyskiwania dostępu do kluczy mapy.
key
Klucz, którego wartość skrótu ma być obliczana.
Wartość zwracana
Wartość skrótu klucza.
Uwagi
Ta funkcja jest wywoływana bezpośrednio przez i pośrednio przez CMap::RemoveKey
CMap::Lookup
i CMap::operator[]
.
Domyślna implementacja tworzy wartość skrótu, przesuwając klucz w prawo o cztery pozycje. Zastąpi tę funkcję, aby zwracała wartości skrótu odpowiednie dla aplikacji.
Przykład
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));
}
Wymagania
Nagłówek afxtempl.h
Serializowanie elementów
CArray, CList i CMap wywołają tę funkcję, aby serializować elementy.
template<class TYPE>
void AFXAPI SerializeElements(CArchive& ar, TYPE* pElements, INT_PTR nCount);
Parametry
TYP
Parametr szablonu określający typ elementów.
Ar
Obiekt archiwum do zarchiwizowanego do lub z.
pElements
Wskaźnik do zarchiwizowanych elementów.
nCount
Liczba zarchiwizowanych elementów
Uwagi
Domyślna implementacja wykonuje bitowy odczyt lub zapis.
Aby uzyskać informacje na temat implementowania tych i innych funkcji pomocnika, zobacz artykuł Kolekcje: Jak utworzyć bezpieczną kolekcję typu.
Przykład
Zobacz przykład w artykule Collections: How to Make a Type-Safe Collection (Jak utworzyć bezpieczną kolekcję typu).
Wymagania
Nagłówek afxtempl.h