Doporučení pro výběr třídy kolekce
Tento článek obsahuje podrobné informace, které můžete zvolit kolekce třídy pro potřeby konkrétní aplikace.
Výběr třídy kolekce závisí na mnoha faktorech, včetně:
Funkce obrazec Třída: pořadí, indexování a výkon, jak je znázorněno Tvaru funkce kolekce tabulce dále v tomto tématu
Zda používá třída šablony jazyka C++
Zda lze serializovat prvky v kolekci uloženo
Zda lze vypsat prvky v kolekci uloženo pro diagnostiku
Je bezpečné typ kolekce
V následující tabulce Tvaru funkce kolekce, shrnuje vlastnosti dostupné kolekce obrazců.
Sloupce 2 a 3 popisují každý obrazec objednávání a charakteristiky přístup.V tabulce "objednáno" rozumí, že určuje pořadí, ve kterém jsou položky vkládání a odstraňování jejich pořadí v kolekci; To neznamená, že položky jsou seřazeny na jejich obsah.Termín "indexovaných" znamená, že položky v kolekci může načíst celé číslo indexu, podobně jako typické pole položky.
Sloupce 4 a 5 popisují výkon každého obrazce.V aplikacích, které vyžadují mnoho vkládání do kolekce může být rychlost vkládání zvláště důležité. pro jiné aplikace může být důležitější rychlost vyhledávání.
Sloupec 6 popisuje, zda každý obrazec může obsahovat duplicitní prvky.
Funkce kolekce obrazce
Tvar |
Objednané? |
Indexovány? |
Vložte element |
Zadaný prvek hledání |
Duplicitní prvky? |
---|---|---|---|---|---|
Seznam |
Ano |
Ne |
Rychlé |
Zpomalit |
Ano |
Pole |
Ano |
Podle int |
Zpomalit |
Zpomalit |
Ano |
Mapa |
Ne |
Klíčem |
Rychlé |
Rychlé |
Žádné (klíče) Ano (hodnoty) |
V následující tabulce Vlastnosti třídy kolekce MFC, shrnuje jako vodítko pro výběr jiné důležité charakteristiky určité kolekce tříd MFC.Volba může záviset na zda třídy podle šablony jazyka C++, zda její prvky lze serializovat pomocí MFC v dokumentu serializace mechanismu, zda můžete prostřednictvím mechanismu diagnostické dumpingové a MFC dumpingové jeho prvků, nebo zda třídy typu bezpečné –, zda lze zaručit typ prvky uložené v a načtena z kolekce založené na třídě.
Vlastnosti kolekce tříd MFC
Třída |
Používá C++ šablony |
Může být serializovat |
Může být dumping |
Je Typ bezpečné |
---|---|---|---|---|
CArray |
Ano |
Ano, 1 |
Ano, 1 |
Ne |
CByteArray |
Ne |
Ano |
Ano |
Ano 3 |
CDWordArray |
Ne |
Ano |
Ano |
Ano 3 |
CList |
Ano |
Ano, 1 |
Ano, 1 |
Ne |
CMap |
Ano |
Ano, 1 |
Ano, 1 |
Ne |
CMapPtrToPtr |
Ne |
Ne |
Ano |
Ne |
CMapPtrToWord |
Ne |
Ne |
Ano |
Ne |
CMapStringToOb |
Ne |
Ano |
Ano |
Ne |
CMapStringToPtr |
Ne |
Ne |
Ano |
Ne |
CMapStringToString |
Ne |
Ano |
Ano |
Ano 3 |
CMapWordToOb |
Ne |
Ano |
Ano |
Ne |
CMapWordToPtr |
Ne |
Ne |
Ano |
Ne |
CObArray |
Ne |
Ano |
Ano |
Ne |
CObList |
Ne |
Ano |
Ano |
Ne |
CPtrArray |
Ne |
Ne |
Ano |
Ne |
CPtrList |
Ne |
Ne |
Ano |
Ne |
CStringArray |
Ne |
Ano |
Ano |
Ano 3 |
CStringList |
Ne |
Ano |
Ano |
Ano 3 |
CTypedPtrArray |
Ano |
Závisí 2 |
Ano |
Ano |
CTypedPtrList |
Ano |
Závisí 2 |
Ano |
Ano |
CTypedPtrMap |
Ano |
Závisí 2 |
Ano |
Ano |
CUIntArray |
Ne |
Ne |
Ano |
Ano 3 |
CWordArray |
Ne |
Ano |
Ano |
Ano 3 |
1.Chcete-li serializovat, musíte explicitně volat objektu kolekce Serialize funkce; Chcete-li vypsat, musíte explicitně volat jeho Dump funkce.Formulář nelze použít ar << collObj serializace nebo dmp<< collObj pro výpis.
2.Sériovost závisí na podkladové typ kolekce.Například pole zadaný ukazatel je založena na CObArray, je serializovatelný; Pokud na základě CPtrArray, není serializovatelný."Ptr" třídy obecně nelze serializovat.
3.Pokud označení Ano v tomto sloupci, kolekce třídy nontemplate je typ bezpečné používají určené.Například ukládání bajtů CByteArray, je pole Typ bezpečné.Ale pokud použít k ukládání znaků, jeho typ bezpečnosti určitých méně.
Viz také
Úkoly
Přístup ke všem členům kolekce