Sdílet prostřednictvím


Doporučení pro výběr třídy kolekce

Tento článek obsahuje podrobné informace, které vám pomůžou vybrat třídu kolekce pro konkrétní potřeby aplikace.

Volba třídy kolekce závisí na řadě faktorů, mezi které patří:

  • Funkce obrazce třídy: pořadí, indexování a výkon, jak je znázorněno v tabulce Funkce obrazce kolekce dále v tomto tématu

  • Zda třída používá šablony jazyka C++

  • Zda lze serializovat prvky uložené v kolekci

  • Určuje, jestli lze prvky uložené v kolekci vyhodit pro diagnostiku.

  • Zda je kolekce bezpečná pro typ

Následující tabulka Funkce obrazců kolekce shrnuje charakteristiky dostupných obrazců kolekce.

  • Sloupce 2 a 3 popisují pořadí a charakteristiky přístupu jednotlivých obrazců. Výraz "objednaný" v tabulce znamená, že pořadí, ve kterém jsou položky vloženy a odstraněny, určuje jejich pořadí v kolekci; neznamená, že položky jsou seřazené v jejich obsahu. Výraz "indexed" znamená, že položky v kolekci lze načíst celočíselnou indexou, podobně jako položky v typickém poli.

  • Sloupce 4 a 5 popisují výkon jednotlivých obrazců. V aplikacích, které vyžadují mnoho vložení do kolekce, může být rychlost vkládání obzvláště důležitá; pro jiné aplikace může být důležitější rychlost vyhledávání.

  • Sloupec 6 popisuje, jestli každý obrazec umožňuje duplicitní prvky.

Funkce obrazce kolekce

Tvar Objednáno Indexované Vložení elementu Hledání zadaného prvku Duplicitní prvky
Seznam Ano Ne Rychlé Pomalá Ano
Pole Ano Podle int Pomalá Pomalá Ano
Map Číslo Podle klíče Rychlé Rychlé Ne (klíče) Ano (hodnoty)

Následující tabulka, Charakteristiky tříd kolekce MFC, shrnuje další důležité vlastnosti konkrétních tříd kolekce MFC jako vodítko pro výběr. Vaše volba může záviset na tom, zda je třída založená na šablonách jazyka C++, zda lze jeho prvky serializovat prostřednictvím mechanismu serializace dokumentů MFC, zda lze jeho prvky vypsat prostřednictvím diagnostického dumpingového mechanismu MFC, nebo zda je třída bezpečná pro typ – to znamená, zda můžete zaručit typ prvků uložených v kolekci a načíst z kolekce založené na třídě.

Charakteristiky tříd kolekce MFC

Třída Používá C++

šablony
Může být

Serializovat
Může být

Dumpingových
Is

typově bezpečný
CArray Ano Ano 1 Ano 1 Číslo
CByteArray No Ano Ano Ano 3
CDWordArray Číslo Ano Ano Ano 3
CList Ano Ano 1 Ano 1 Číslo
CMap Ano Ano 1 Ano 1 Číslo
CMapPtrToPtr No No Ano No
CMapPtrToWord No No Ano No
CMapStringToOb No Ano Ano No
CMapStringToPtr No No Ano No
CMapStringToString No Ano Ano Ano 3
CMapWordToOb Číslo Ano Ano No
CMapWordToPtr No No Ano No
CObArray No Ano Ano No
CObList No Ano Ano No
CPtrArray No No Ano No
CPtrList No No Ano No
CStringArray No Ano Ano Ano 3
CStringList Číslo Ano Ano Ano 3
CTypedPtrArray Ano Závisí na 2 Ano Ano
CTypedPtrList Ano Závisí na 2 Ano Ano
CTypedPtrMap Ano Závisí na 2 Ano Ano
CUIntArray No No Ano Ano 3
CWordArray Číslo Ano Ano Ano 3
  1. Chcete-li serializovat, musíte explicitně volat funkci objektu Serialize kolekce; k výpisu je nutné explicitně volat jeho Dump funkci. Formulář nelze použít ar << collObj k serializaci nebo formulář dmp<< collObj k výpisu.

  2. Serializovatelnost závisí na základním typu kolekce. Pokud je například pole typu ukazatele založené na CObArray, je serializovatelné; pokud je založeno na CPtrArray, není serializovatelné. Obecně platí, že třídy Ptr nelze serializovat.

  3. Pokud je v tomto sloupci označena možnost Ano, je třída kolekce bez přípony typu za předpokladu, že ji použijete podle očekávání. Pokud například ukládáte bajty do CByteArraypole, pole je typu bezpečné. Pokud ho ale použijete k ukládání znaků, bezpečnost typů je méně jistá.

Viz také

Kolekce
Třídy založené na šablonách
Postupy: Příprava typově bezpečné kolekce
Přístup ke všem členům kolekce