Aracılığıyla paylaş


Koleksiyon Sınıfı Seçme Önerileri

Bu makale, belirli uygulama gereksinimleriniz için bir koleksiyon sınıfı seçmenize yardımcı olmak üzere tasarlanmış ayrıntılı bilgiler içerir.

Koleksiyon sınıfı seçiminiz, aşağıdakileri içeren bir dizi faktöre bağlıdır:

  • Sınıf şeklinin özellikleri: sıra, dizin oluşturma ve performans, bu konunun devamında yer alan Koleksiyon Şekli Özellikleri tablosunda gösterildiği gibi

  • Sınıfın C++ şablonları kullanıp kullanmadığı

  • Koleksiyonda depolanan öğelerin serileştirilip serileştirilemeyeceği

  • Koleksiyonda depolanan öğelerin tanılama için bırakılıp bırakılamayacağı

  • Koleksiyonun tür açısından güvenli olup olmadığı

Aşağıdaki Koleksiyon Şekli Özellikleri tablosu, kullanılabilir koleksiyon şekillerinin özelliklerini özetler.

  • 2. ve 3. sütunlar her şeklin sıralama ve erişim özelliklerini açıklar. Tabloda "sıralı" terimi, öğelerin eklendiği ve silindiği sıranın koleksiyondaki sıralarını belirlediği anlamına gelir; bu, öğelerin içeriklerine göre sıralandığı anlamına gelmez. "Dizinli" terimi, koleksiyondaki öğelerin tipik bir dizideki öğelere çok benzer bir tamsayı dizini tarafından alınabileceği anlamına gelir.

  • 4. ve 5. sütunlar her şeklin performansını açıklar. Koleksiyona çok sayıda ekleme gerektiren uygulamalarda ekleme hızı özellikle önemli olabilir; diğer uygulamalar için arama hızı daha önemli olabilir.

  • 6. sütun, her şeklin yinelenen öğelere izin verip vermeyeceğini açıklar.

Koleksiyon Şekli Özellikleri

Şekil Sipariş verildi Dizine Öğe ekleme Belirtilen öğeyi ara Yinelenen öğeler
Liste Evet Hayı Hızlı Yavaş Evet
Dizi Evet Int tarafından Yavaş Yavaş Evet
Harita Hayı Anahtar bazında Hızlı Hızlı Hayır (anahtarlar) Evet (değerler)

Aşağıdaki MFC Koleksiyon Sınıflarının Özellikleri tablosu, belirli MFC koleksiyon sınıflarının diğer önemli özelliklerini seçim kılavuzu olarak özetler. Seçiminiz, sınıfın C++ şablonlarına mı dayandığına, öğelerinin MFC'nin belge serileştirme mekanizması aracılığıyla mı serileştirilebileceğine, öğelerinin MFC'nin tanılama döküm mekanizması aracılığıyla mı bırakılacağına veya sınıfın tür açısından güvenli olup olmadığına, yani sınıfı temel alan bir koleksiyonda depolanan ve koleksiyondan alınan öğelerin türünü garanti edip etmeyeceğinize bağlı olabilir.

MFC Koleksiyon Sınıflarının Özellikleri

Sınıf C++ kullanır

şablonlar
Olabilir

Serileştirilmiş
Olabilir

Terk edildi
Var

türü güvenli
CArray Evet Evet 1 Evet 1 Hayı
CByteArray Hayı Evet Evet Evet 3
CDWordArray Hayı Evet Evet Evet 3
CList Evet Evet 1 Evet 1 Hayı
CMap Evet Evet 1 Evet 1 Hayı
CMapPtrToPtr Hayı Hayı Evet Hayı
CMapPtrToWord Hayı Hayı Evet Hayı
CMapStringToOb Hayı Evet Evet Hayı
CMapStringToPtr Hayı Hayı Evet Hayı
CMapStringToString Hayı Evet Evet Evet 3
CMapWordToOb Hayı Evet Evet Hayı
CMapWordToPtr Hayı Hayı Evet Hayı
CObArray Hayı Evet Evet Hayı
CObList Hayı Evet Evet Hayı
CPtrArray Hayı Hayı Evet Hayı
CPtrList Hayı Hayı Evet Hayı
CStringArray Hayı Evet Evet Evet 3
CStringList Hayı Evet Evet Evet 3
CTypedPtrArray Evet 2'ye bağlıdır Evet Evet
CTypedPtrList Evet 2'ye bağlıdır Evet Evet
CTypedPtrMap Evet 2'ye bağlıdır Evet Evet
CUIntArray Hayı Hayı Evet Evet 3
CWordArray Hayı Evet Evet Evet 3
  1. Serileştirmek için, koleksiyon nesnesinin Serialize işlevini açıkça çağırmanız gerekir; dökümünü almak için Dump işlevini açıkça çağırmanız gerekir. Seri hale getirmek için ar << collObj formunu veya döküm için dmp<< collObj formunu kullanamazsınız.

  2. Seri hale getirilebilirlik, temel alınan koleksiyon türüne bağlıdır. Örneğin, yazılan bir işaretçi dizisi tabanlıysa CObArrayserileştirilebilir; tabanlıysa CPtrArrayserileştirilebilir değildir. Genel olarak, "Ptr" sınıfları serileştirilemez.

  3. Bu sütunda Evet olarak işaretlenirse, temel olmayan bir koleksiyon sınıfı, amaçlandığı şekilde kullanmanız koşuluyla tür açısından güvenlidir. Örneğin, baytları CByteArray içinde depolarsanız, dizi tür güvenliğindedir. Ancak karakterleri depolamak için kullanırsanız, tip güvenliği daha az kesin olur.

Ayrıca bakınız

Koleksiyonlar
Template-Based Sınıfları
Nasıl yapılır: Type-Safe Koleksiyonu Yapma
Bir Koleksiyonun Tüm Üyelerine Erişme