Rekomendasi untuk Memilih Kelas Koleksi
Artikel ini berisi informasi terperinci yang dirancang untuk membantu Anda memilih kelas koleksi untuk kebutuhan aplikasi tertentu Anda.
Pilihan kelas koleksi Anda tergantung pada sejumlah faktor, termasuk:
Fitur bentuk kelas: urutan, pengindeksan, dan performa, seperti yang ditunjukkan dalam tabel Fitur Bentuk Koleksi nanti dalam topik ini
Apakah kelas menggunakan templat C++
Apakah elemen yang disimpan dalam koleksi dapat diserialisasikan
Apakah elemen yang disimpan dalam koleksi dapat dicadangkan untuk diagnostik
Apakah koleksi berjenis aman
Tabel berikut, Fitur Bentuk Koleksi, meringkas karakteristik bentuk koleksi yang tersedia.
Kolom 2 dan 3 menjelaskan karakteristik urutan dan akses setiap bentuk. Dalam tabel, istilah "diurutkan" berarti bahwa urutan item disisipkan dan dihapus menentukan urutannya dalam koleksi; bukan berarti item diurutkan pada kontennya. Istilah "diindeks" berarti bahwa item dalam koleksi dapat diambil oleh indeks bilangan bulat, sama seperti item dalam array biasa.
Kolom 4 dan 5 menjelaskan performa setiap bentuk. Dalam aplikasi yang membutuhkan banyak penyisipan ke dalam koleksi, kecepatan penyisipan mungkin sangat penting; untuk aplikasi lain, kecepatan pencarian mungkin lebih penting.
Kolom 6 menjelaskan apakah setiap bentuk memungkinkan elemen duplikat.
Fitur Bentuk Koleksi
Bentuk | Dipesan | Diindeks | Sisipkan elemen | Cari elemen yang ditentukan | Elemen duplikat |
---|---|---|---|---|---|
Daftar | Ya | Tidak | Cepat | Lambat | Ya |
Array | Ya | Menurut int | Lambat | Lambat | Ya |
Peta | Tidak | Menurut kunci | Cepat | Cepat | Tidak (kunci) Ya (nilai) |
Tabel berikut, Karakteristik Kelas Koleksi MFC, meringkas karakteristik penting lainnya dari kelas koleksi MFC tertentu sebagai panduan untuk pemilihan. Pilihan Anda mungkin bergantung pada apakah kelas didasarkan pada templat C++, apakah elemennya dapat diserialisasikan melalui mekanisme serialisasi dokumen MFC, apakah elemennya dapat dicadangkan melalui mekanisme pembuangan diagnostik MFC, atau apakah kelas tersebut aman jenis — yaitu, apakah Anda dapat menjamin jenis elemen yang disimpan dan diambil dari koleksi berdasarkan kelas.
Karakteristik Kelas Koleksi MFC
Kelas | Menggunakan C++ templat |
Bisa jadi diserialisasikan |
Bisa jadi Dibuang |
Is jenis aman |
---|---|---|---|---|
CArray |
Ya | Ya 1 | Ya 1 | Tidak |
CByteArray |
No | Ya | Ya | Ya 3 |
CDWordArray |
Tidak | Ya | Ya | Ya 3 |
CList |
Ya | Ya 1 | Ya 1 | Tidak |
CMap |
Ya | Ya 1 | Ya 1 | Tidak |
CMapPtrToPtr |
No | No | Ya | No |
CMapPtrToWord |
No | No | Ya | No |
CMapStringToOb |
No | Ya | Ya | No |
CMapStringToPtr |
No | No | Ya | No |
CMapStringToString |
No | Ya | Ya | Ya 3 |
CMapWordToOb |
Tidak | Ya | Ya | No |
CMapWordToPtr |
No | No | Ya | No |
CObArray |
No | Ya | Ya | No |
CObList |
No | Ya | Ya | No |
CPtrArray |
No | No | Ya | No |
CPtrList |
No | No | Ya | No |
CStringArray |
No | Ya | Ya | Ya 3 |
CStringList |
Tidak | Ya | Ya | Ya 3 |
CTypedPtrArray |
Ya | Tergantung 2 | Ya | Ya |
CTypedPtrList |
Ya | Tergantung 2 | Ya | Ya |
CTypedPtrMap |
Ya | Tergantung 2 | Ya | Ya |
CUIntArray |
No | No | Ya | Ya 3 |
CWordArray |
Tidak | Ya | Ya | Ya 3 |
Untuk membuat serialisasi, Anda harus secara eksplisit memanggil fungsi objek
Serialize
koleksi; untuk mencadangkan, Anda harus secara eksplisit memanggil fungsinyaDump
. Anda tidak dapat menggunakan formulirar << collObj
untuk menserialisasikan atau formulirdmp
<< collObj
untuk dibuang.Serialisasi tergantung pada jenis koleksi yang mendasar. Misalnya, jika array pointer yang ditik didasarkan pada
CObArray
, itu dapat diserialisasikan; jika berdasarkan , itu tidak dapat diserialisasikanCPtrArray
. Secara umum, kelas "Ptr" tidak dapat diserialisasikan.Jika ditandai Ya di kolom ini, kelas koleksi nontemplate aman dengan jenis asalkan Anda menggunakannya seperti yang dimaksudkan. Misalnya, jika Anda menyimpan byte dalam
CByteArray
, array berjenis aman. Tetapi jika Anda menggunakannya untuk menyimpan karakter, keamanan jenisnya kurang pasti.
Baca juga
Koleksi
Kelas Berbasis Templat
Cara: Membuat Koleksi Type-Brankas
Mengakses Semua Anggota Koleksi