Koleksiyon Sınıfı Yardımcıları
Koleksiyon sınıfları CMap
, CList
ve öğeleri karşılaştırma, kopyalama ve CArray
serileştirme gibi amaçlar için şablonlu genel yardımcı işlevlerini kullanır. , CList
ve CArray
tabanlı CMap
sı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 SerializeElements
yardı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
, float
vb.) 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::Dump
Döküm derinliği 0'dan büyükse , CList::Dump
ve CMap::Dump
işlevleri bunu çağırır.
Varsayılan uygulama hiçbir şey yapmaz. Koleksiyonunuzun öğeleri öğesinden CObject
tü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ı