Bagikan melalui


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
  1. Untuk membuat serialisasi, Anda harus secara eksplisit memanggil fungsi objek Serialize koleksi; untuk mencadangkan, Anda harus secara eksplisit memanggil fungsinya Dump . Anda tidak dapat menggunakan formulir ar << collObj untuk menserialisasikan atau formulir dmp<< collObj untuk dibuang.

  2. Serialisasi tergantung pada jenis koleksi yang mendasar. Misalnya, jika array pointer yang ditik didasarkan pada CObArray, itu dapat diserialisasikan; jika berdasarkan , itu tidak dapat diserialisasikan CPtrArray. Secara umum, kelas "Ptr" tidak dapat diserialisasikan.

  3. 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