Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kelas koleksi CMap, , CListdan CArray menggunakan fungsi pembantu global templat untuk tujuan seperti membandingkan, menyalin, dan menserialisasikan elemen. Sebagai bagian dari implementasi kelas Anda berdasarkan CMap, , CListdan CArray, Anda harus mengambil alih fungsi ini seperlunya dengan versi yang disesuaikan dengan jenis data yang disimpan di peta, daftar, atau array Anda. Untuk informasi tentang mengesampingkan fungsi pembantu seperti SerializeElements, lihat artikel Koleksi: Cara Membuat Koleksi Type-Safe. Perhatikan bahwa ConstructElements dan DestructElements telah tidak digunakan lagi.
Pustaka Kelas Microsoft Foundation menyediakan fungsi global berikut di afxtempl.h untuk membantu Anda menyesuaikan kelas koleksi Anda:
Pembantu Kelas Koleksi
| Nama | Deskripsi |
|---|---|
| CompareElements | Menunjukkan apakah elemen sama. |
| CopyElements | Menyalin elemen dari satu array ke array lainnya. |
| DumpElements | Menyediakan output diagnostik berorientasi aliran. |
| HashKey | Menghitung kunci hash. |
| SerializeElements | Menyimpan atau mengambil elemen ke atau dari arsip. |
CompareElements
Dipanggil langsung oleh CList::Find dan secara tidak langsung oleh CMap::Lookup dan CMap::operator[].
template<class TYPE, class ARG_TYPE>
BOOL AFXAPI
CompareElements(
const TYPE* pElement1,
const ARG_TYPE* pElement2);
Parameter
KETIK
Jenis elemen pertama yang akan dibandingkan.
pElement1
Penunjuk ke elemen pertama yang akan dibandingkan.
ARG_TYPE
Jenis elemen kedua yang akan dibandingkan.
pElement2
Penunjuk ke elemen kedua yang akan dibandingkan.
Tampilkan Nilai
Bukan nol jika objek yang ditunjukkan oleh pElement1 sama dengan objek yang ditunjukkan oleh pElement2; jika tidak, 0.
Keterangan
Panggilan CMap menggunakan CMap parameter templat KEY dan ARG_KEY.
Implementasi default mengembalikan hasil perbandingan *pElement1 dan *pElement2. Ambil alih fungsi ini sehingga membandingkan elemen dengan cara yang sesuai untuk aplikasi Anda.
Bahasa C++ menentukan operator perbandingan (==) untuk jenis sederhana (char, , intfloat, dan sebagainya) tetapi tidak menentukan operator perbandingan untuk kelas dan struktur. Jika Anda ingin menggunakan CompareElements atau membuat instans salah satu kelas koleksi yang menggunakannya, Anda harus menentukan operator perbandingan atau kelebihan beban CompareElements dengan versi yang mengembalikan nilai yang sesuai.
Persyaratan
Header: afxtempl.h
CopyElements
Fungsi ini dipanggil langsung oleh CArray::Append dan CArray::Copy.
template<class TYPE>
void AFXAPI CopyElements(
TYPE* pDest,
const TYPE* pSrc,
INT_PTR nCount);
Parameter
KETIK
Parameter templat yang menentukan jenis elemen yang akan disalin.
pDest
Penunjuk ke tujuan tempat elemen akan disalin.
pSrc
Arahkan ke sumber elemen yang akan disalin.
nCount
Jumlah elemen yang akan disalin.
Keterangan
Implementasi default menggunakan operator penugasan sederhana ( = ) untuk melakukan operasi penyalinan. Jika jenis yang disalin tidak memiliki operator yang kelebihan beban=, maka implementasi default melakukan salinan bitwise.
Untuk informasi tentang menerapkan fungsi ini dan pembantu lainnya, lihat artikel Koleksi: Cara Membuat Koleksi Type-Safe.
Persyaratan
Header afxtempl.h
DumpElements
Menyediakan output diagnostik berorientasi aliran dalam bentuk teks untuk elemen koleksi Anda saat ditimpa.
template<class TYPE>
void AFXAPI DumpElements(
CDumpContext& dc,
const TYPE* pElements,
INT_PTR nCount);
Parameter
arus searah
Konteks cadangan untuk elemen pencadangan.
KETIK
Parameter templat yang menentukan jenis elemen.
pElements
Penunjuk ke elemen yang akan dibuang.
nCount
Jumlah elemen yang akan dibuang.
Keterangan
Fungsi CArray::Dump, CList::Dump, dan CMap::Dump memanggil ini jika kedalaman cadangan lebih besar dari 0.
Implementasi default tidak melakukan apa pun. Jika elemen koleksi Anda berasal dari CObject, penimpaan Anda biasanya akan berulang melalui elemen koleksi, memanggil setiap elemen secara bergantian Dump .
Persyaratan
Header afxtempl.h
HashKey
Menghitung nilai hash untuk kunci yang diberikan.
template<class ARG_KEY>
AFX_INLINE UINT AFXAPI HashKey(ARG_KEY key);
Parameter
ARG_KEY
Parameter templat yang menentukan jenis data yang digunakan untuk mengakses kunci peta.
kunci
Kunci yang nilai hash-nya akan dihitung.
Tampilkan Nilai
Nilai hash kunci.
Keterangan
Fungsi ini dipanggil langsung oleh CMap::RemoveKey dan tidak langsung oleh CMap::Lookup dan CMap::operator[].
Implementasi default membuat nilai hash dengan menggeser kunci ke kanan dengan empat posisi. Ambil alih fungsi ini sehingga mengembalikan nilai hash yang sesuai untuk aplikasi Anda.
Contoh
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));
}
Persyaratan
Header afxtempl.h
SerializeElements
CArray, CList, dan CMap memanggil fungsi ini untuk menserialisasikan elemen.
template<class TYPE>
void AFXAPI SerializeElements(CArchive& ar, TYPE* pElements, INT_PTR nCount);
Parameter
KETIK
Parameter templat yang menentukan jenis elemen.
Ar
Objek arsip untuk diarsipkan ke atau dari.
pElements
Penunjuk ke elemen yang diarsipkan.
nCount
Jumlah elemen yang diarsipkan
Keterangan
Implementasi default melakukan pembacaan atau penulisan bitwise.
Untuk informasi tentang menerapkan fungsi ini dan pembantu lainnya, lihat artikel Koleksi: Cara Membuat Koleksi Type-Safe.
Contoh
Lihat contoh dalam artikel Koleksi: Cara Membuat Koleksi Type-Safe.
Persyaratan
Header afxtempl.h