Koleksiyon Sınıfı Yardımcıları

Koleksiyon sınıfları CMap, CListve öğeleri karşılaştırma, kopyalama ve CArray serileştirme gibi amaçlar için şablonlu genel yardımcı işlevlerini kullanır. , CListve CArraytabanlı CMapsınıfları uygulamanızın bir parçası olarak, haritanızda, listenizde veya dizinizde depolanan veri türüne göre uyarlanmış sürümlerle bu işlevleri gerektiği gibi geçersiz kılmalısınız. gibi SerializeElementsyardımcı işlevleri geçersiz kılma hakkında bilgi için Koleksiyonlar: Tür Açısından Güvenli Koleksiyon Yapma makalesine bakın. ve'nin ConstructElements DestructElements kullanım dışı bırakıldığını unutmayın.

Microsoft Foundation Sınıf Kitaplığı, koleksiyon sınıflarınızı özelleştirmenize yardımcı olmak için afxtempl.h dosyasında aşağıdaki genel işlevleri sağlar:

Koleksiyon Sınıfı Yardımcıları

Veri Akışı Adı Açıklama
CompareElements Öğelerin aynı olup olmadığını gösterir.
CopyElements Öğeleri bir diziden diğerine kopyalar.
DumpElements Akış odaklı tanılama çıkışı sağlar.
HashKey Karma anahtarı hesaplar.
SerializeElements Arşive veya arşivden öğeleri depolar veya alır.

CompareElements

ve tarafından CList::Find doğrudan ve dolaylı olarak CMap::Lookup çağrılır CMap::operator[].

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

Parametreler

TÜR
Karşılaştırılacak ilk öğenin türü.

pElement1
Karşılaştırılacak ilk öğenin işaretçisi.

ARG_TYPE
Karşılaştırılacak ikinci öğenin türü.

pElement2
Karşılaştırılacak ikinci öğe işaretçisi.

Dönüş Değeri

pElement1 tarafından işaret edilen nesne pElement2 tarafından işaret edilen nesneye eşitse sıfır olmayan; aksi takdirde 0.

Açıklamalar

Çağrılar CMap KEY ve ARG_KEY şablon parametrelerini kullanırCMap.

Varsayılan uygulama, *pElement1 ve *pElement2 karşılaştırmasının sonucunu döndürür. Öğeleri uygulamanız için uygun bir şekilde karşılaştırabilmesi için bu işlevi geçersiz kılın.

C++ dili, basit türler (, int, floatvb.) için karşılaştırma işlecini ( ==char) tanımlar, ancak sınıflar ve yapılar için bir karşılaştırma işleci tanımlamaz. Bunu kullanan koleksiyon sınıflarından birini kullanmak CompareElements veya örnek oluşturmak istiyorsanız, karşılaştırma işlecini tanımlamanız veya uygun değerleri döndüren bir sürümle aşırı yükleme CompareElements uygulamanız gerekir.

Gereksinimler

Üst bilgi: afxtempl.h

CopyElements

Bu işlev doğrudan CArray::Append ve CArray::Copy tarafından çağrılır.

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

Parametreler

TÜR
Kopyalanacak öğelerin türünü belirten şablon parametresi.

pDest
Öğelerin kopyalanacağı hedefin işaretçisi.

pSrc
Kopyalanacak öğelerin kaynağına işaret eden işaretçi.

nCount
Kopyalanacak öğe sayısı.

Açıklamalar

Varsayılan uygulama, kopyalama işlemini gerçekleştirmek için basit atama işlecini ( = ) kullanır. Kopyalanan türün işleci= aşırı yüklenmiş değilse, varsayılan uygulama bit düzeyinde kopyalama gerçekleştirir.

Bu ve diğer yardımcı işlevleri uygulama hakkında bilgi için Koleksiyonlar: Tür Açısından Güvenli Koleksiyon Yapma makalesine bakın.

Gereksinimler

Üst bilgi afxtempl.h

DumpElements

Geçersiz kılındığında koleksiyonunuzun öğeleri için metin biçiminde akış odaklı tanılama çıkışı sağlar.

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

Parametreler

Dc
Döküm öğeleri için döküm bağlamı.

TÜR
Öğelerin türünü belirten şablon parametresi.

pElements
Atılacak öğelerin işaretçisi.

nCount
Atılacak öğe sayısı.

Açıklamalar

CArray::DumpDöküm derinliği 0'dan büyükse , CList::Dumpve CMap::Dump işlevleri bunu çağırır.

Varsayılan uygulama hiçbir şey yapmaz. Koleksiyonunuzun öğeleri öğesinden CObjecttüretilirse, geçersiz kılmanız genellikle koleksiyonun öğeleri aracılığıyla yinelenir ve sırayla her öğe için çağrılır Dump .

Gereksinimler

Üst bilgi afxtempl.h

HashKey

Verilen anahtar için bir karma değeri hesaplar.

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

Parametreler

ARG_KEY
Harita anahtarlarına erişmek için kullanılan veri türünü belirten şablon parametresi.

key
Karma değeri hesaplanacak anahtar.

Dönüş Değeri

Anahtarın karma değeri.

Açıklamalar

Bu işlev ve tarafından CMap::RemoveKey doğrudan ve dolaylı olarak CMap::Lookup çağrılır CMap::operator[].

Varsayılan uygulama, anahtarı sağa dört konum kaydırarak bir karma değer oluşturur. Uygulamanız için uygun karma değerleri döndürmesi için bu işlevi geçersiz kılın.

Örnek

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

Gereksinimler

Üst bilgi afxtempl.h

SerializeElements

CArray, CList ve CMap öğeleri seri hale getirmek için bu işlevi çağırır.

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

Parametreler

TÜR
Öğelerin türünü belirten şablon parametresi.

Ar
Arşivle veya buradan arşivlene bir arşiv nesnesi.

pElements
Arşivlenen öğelerin işaretçisi.

nCount
Arşivlenen öğe sayısı

Açıklamalar

Varsayılan uygulama bit düzeyinde okuma veya yazma işlemi yapar.

Bu ve diğer yardımcı işlevleri uygulama hakkında bilgi için Koleksiyonlar: Tür Açısından Güvenli Koleksiyon Yapma makalesine bakın.

Örnek

Koleksiyonlar: Tür Açısından Güvenli Koleksiyon Yapma makalesindeki örneklere bakın.

Gereksinimler

Üst bilgi afxtempl.h

Ayrıca bkz.

Makrolar ve Genel Ayarlar
CMap Sınıfı
CList Sınıfı
CArray Sınıfı