Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 |
Serileştirmek için, koleksiyon nesnesinin
Serialize
işlevini açıkça çağırmanız gerekir; dökümünü almak içinDump
işlevini açıkça çağırmanız gerekir. Seri hale getirmek içinar << collObj
formunu veya döküm içindmp
<< collObj
formunu kullanamazsınız.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
CObArray
serileştirilebilir; tabanlıysaCPtrArray
serileştirilebilir değildir. Genel olarak, "Ptr" sınıfları serileştirilemez.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