共用方式為


集合類別 Helper

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

Microsoft Foundation Class Library 在 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 使用範本參數 KEY ARG_KEY

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

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

需求

Header: afxtempl.h

CopyElements

此函式是由 CArray::Append CArray::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::RemoveKeyCMap::LookupCMap::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

CArray CList CMap 會呼叫此函式來序列化專案。

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

參數

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

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

pElements
要封存之專案的指標。

nCount
正在封存的專案數目

備註

預設實作會執行位讀取或寫入。

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

範例

請參閱集合:如何建立類型保管庫集合 一文 中的範例。

需求

標頭 afxtempl.h

另請參閱

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