다음을 통해 공유


컬렉션 클래스 도우미

컬렉션 클래스는 CMapCList요소 비교, 복사 및 CArray 직렬화와 같은 목적으로 템플릿이 있는 전역 도우미 함수를 사용합니다. 클래스를 기반으로 하는 클래스 구현의 일부로, 맵, 목록 또는 배열에 CMapCListCArray저장된 데이터 형식에 맞게 조정된 버전으로 필요에 따라 이러한 함수를 재정의해야 합니다. 도우미 함수 SerializeElements를 재정의하는 방법에 대한 자세한 내용은 컬렉션: 형식이 안전한 컬렉션을 만드는 방법 문서를 참조하세요. 참고로 ConstructElements DestructElements 더 이상 사용되지 않습니다.

Microsoft Foundation 클래스 라이브러리는 컬렉션 클래스를 사용자 지정할 수 있도록 afxtempl.h에서 다음과 같은 전역 함수를 제공합니다.

컬렉션 클래스 도우미

속성 설명
CompareElements 요소가 같은지 여부를 나타냅니다.
CopyElements 한 배열에서 다른 배열로 요소를 복사합니다.
DumpElements 스트림 지향 진단 출력을 제공합니다.
HashKey 해시 키를 계산합니다.
SerializeElements 보관 파일에서 요소를 저장하거나 검색합니다.

CompareElements

직접 CList::Find 및 간접적으로 CMap::Lookup 호출됩니다 CMap::operator[].

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

매개 변수

TYPE
비교할 첫 번째 요소의 형식입니다.

pElement1
비교할 첫 번째 요소에 대한 포인터입니다.

ARG_TYPE
비교할 두 번째 요소의 형식입니다.

pElement2
비교할 두 번째 요소에 대한 포인터입니다.

Return Value

pElement1이 가리키는 개체가 pElement2가 가리키는 개체와 같으면 0이 아니고, 그렇지 않으면 0입니다.

설명

호출은 CMap 템플릿 매개 변수 KEYARG_KEY 사용합니다CMap.

기본 구현은 *pElement1*pElement2비교 결과를 반환합니다. 애플리케이션에 적합한 방식으로 요소를 비교할 수 있도록 이 함수를 재정의합니다.

C++ 언어는 단순 형식(, int, float등)에 대한 비교 연산자(==char)를 정의하지만 클래스 및 구조체에 대한 비교 연산자는 정의하지 않습니다. 사용하는 컬렉션 클래스 중 하나를 사용 CompareElements 하거나 인스턴스화하려면 비교 연산자를 정의하거나 적절한 값을 반환하는 버전으로 오버로드 CompareElements 해야 합니다.

요구 사항

헤더: afxtempl.h

CopyElements

이 함수는 CArray::AppendCArray::Copy에서 직접 호출됩니다.

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

매개 변수

TYPE
복사할 요소의 형식을 지정하는 템플릿 매개 변수입니다.

pDest
요소를 복사할 대상에 대한 포인터입니다.

pSrc
복사할 요소의 원본에 대한 포인터입니다.

nCount
복사할 요소의 수입니다.

설명

기본 구현에서는 단순 할당 연산자( = )를 사용하여 복사 작업을 수행합니다. 복사되는 형식에 오버로드된 operator=가 없으면 기본 구현에서 비트 복사를 수행합니다.

이 함수 및 기타 도우미 함수를 구현하는 방법에 대한 자세한 내용은 컬렉션: 형식이 안전한 컬렉션을 만드는 방법 문서를 참조하세요.

요구 사항

헤더 afxtempl.h

DumpElements

재정의될 때 컬렉션 요소에 대한 텍스트 형식의 스트림 지향 진단 출력을 제공합니다.

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

매개 변수

dc
요소를 덤프하기 위한 덤프 컨텍스트입니다.

TYPE
요소의 형식을 지정하는 템플릿 매개 변수입니다.

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
해시 값을 계산할 키입니다.

Return Value

키의 해시 값입니다.

설명

이 함수는 직접 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

CArray, CListCMap 은 이 함수를 호출하여 요소를 serialize합니다.

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

매개 변수

TYPE
요소의 형식을 지정하는 템플릿 매개 변수입니다.

ar
보관할 보관 개체입니다.

pElements
보관되는 요소에 대한 포인터입니다.

nCount
보관 중인 요소 수

설명

기본 구현은 비트 읽기 또는 쓰기를 수행합니다.

이 함수 및 기타 도우미 함수를 구현하는 방법에 대한 자세한 내용은 컬렉션: 형식이 안전한 컬렉션을 만드는 방법 문서를 참조하세요.

예시

컬렉션: 형식이 안전한 컬렉션을 만드는 방법 문서의 예제를 참조하세요.

요구 사항

헤더 afxtempl.h

참고 항목

매크로 및 전역
CMap 클래스
CList 클래스
CArray 클래스