共用方式為


集合類別 Helper

集合類別 CMapCListCArray 會針對比較、複製和串行化專案等用途,使用樣板化全域協助程式函式。 作為以、 CListCArray為基礎的CMap類別實作的一部分,您必須視需要使用針對對應、清單或數位中所儲存數據類型所量身打造的版本覆寫這些函式。 如需覆寫這類SerializeElements協助程式函式的資訊,請參閱集合:如何建立類型安全集合一文。 請注意, ConstructElementsDestructElements 已被取代。

Microsoft Foundation 類別庫在 afxtempl.h 中提供下列全域函式,以協助您自定義集合類別:

集合類別 Helper

名稱 描述
CompareElements 指出專案是否相同。
CopyElements 將專案從一個陣列複製到另一個陣列。
DumpElements 提供數據流導向診斷輸出。
HashKey 計算哈希金鑰。
SerializeElements 儲存或擷取封存中的專案。

CompareElements

直接由 CList::Find 和間接呼叫 CMap::LookupCMap::operator[]

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

參數

類型
要比較之第一個項目的類型。

pElement1
要比較之第一個專案的指標。

ARG_TYPE
要比較之第二個項目的類型。

pElement2
要比較之第二個專案的指標。

傳回值

如果 pElement1指向的物件等於 pElement2指向的物件,則為非零;否則為 0。

備註

呼叫會CMapCMap使用範本參數KEYARG_KEY

默認實作會傳回比較 *pElement1*pElement2 的結果。 覆寫此函式,讓它以適合您應用程式的方式比較專案。

C++語言會定義簡單型別的比較運算子 (==char、、 intfloat等),但不會定義類別和結構的比較運算符。 如果您想要使用 CompareElements 或 來具現化其中一個使用該類別的集合類別,您必須使用傳回適當值的版本來定義比較運算符或多載 CompareElements

需求

Header: afxtempl.h

CopyElements

此函式是由 CArray::AppendCArray::Copy 直接呼叫。

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

參數

類型
指定要複製之項目的類型的樣板參數。

pDest
指向項目複製目的地的指標。

pSrc
指向要複製項目之來源的指標。

nCount
要複製項目的數目。

備註

預設實作會使用簡單指派運算子 ( = ) 來執行複製作業。 如果要複製的類型沒有多載的 operator=,則預設實作會執行位元複製。

如需實作此函式和其他協助程式函式的資訊,請參閱集合:如何建立類型安全集合一文

需求

標頭 afxtempl.h

DumpElements

覆寫時,會以文字形式提供集合元素的數據流導向診斷輸出。

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

參數

dc
傾印項目的傾印內容。

類型
指定專案類型的樣板參數。

pElements
要傾印之專案的指標。

nCount
要傾印的項目數目。

備註

如果 CArray::Dump傾印深度大於 0, 則 、 CList::DumpCMap::Dump 函式會呼叫這個 。

預設實作不做任何動作。 如果集合的元素衍生自 CObject,則覆寫通常會逐一查看集合的 元素, Dump 接著呼叫每個元素。

需求

標頭 afxtempl.h

HashKey

計算指定索引鍵的哈希值。

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

參數

ARG_KEY
範本參數,指定用來存取地圖索引鍵的數據類型。

key
要計算其哈希值的索引鍵。

傳回值

索引鍵的哈希值。

備註

這個函式是由和間接 CMap::RemoveKey CMap::Lookup CMap::operator[]呼叫。

默認實作會藉由將索引鍵向右移四個位置來建立哈希值。 覆寫此函式,使其傳回適合您應用程式的哈希值。

範例

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));
}

需求

標頭 afxtempl.h

SerializeElements

CArrayCListCMap 會呼叫此函式來串行化專案。

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

參數

類型
指定專案類型的樣板參數。

ar
要封存至或從中封存的封存物件。

pElements
要封存之專案的指標。

nCount
正在封存的項目數目

備註

默認實作會執行位讀取或寫入。

如需實作此函式和其他協助程式函式的資訊,請參閱集合:如何建立類型安全集合一文

範例

請參閱集合:如何建立類型安全集合一文中的範例。

需求

標頭 afxtempl.h

另請參閱

宏和全域
CMap 類別
CList 類別
CArray 類別