Kolekce
Knihovna tříd služby Microsoft Foundation poskytuje třídy kolekcí pro správu skupin objektů. Tyto třídy mají dva typy:
Poznámka
Pokud váš kód již používá třídy kolekce nontemplate, můžete je dál používat. Pokud píšete nové třídy kolekcí bezpečných typů pro vlastní datové typy, doporučujeme použít novější třídy založené na šablonách.
Obrazce kolekce
Třída kolekce je charakterizována svým "tvarem" a typy jeho prvků. Obrazec odkazuje na způsob uspořádání a ukládání objektů kolekcí. MFC poskytuje tři základní obrazce kolekce: seznamy, matice a mapy (označované také jako slovníky). Můžete vybrat obrazec kolekce, který je nejvhodnější pro váš konkrétní programovací problém.
Každý ze tří zadaných obrazců kolekce je stručně popsán dále v tomto tématu. Pokud chcete porovnat funkce obrazců, které vám pomůžou rozhodnout, která je pro váš program nejvhodnější, podívejte se na doporučení pro výběr třídy kolekce.
Seznam
Třída seznamu poskytuje uspořádaný, neindexovaný seznam prvků, implementovaný jako doubly propojený seznam. Seznam má "hlavu" a "ocas", a přidávání nebo odebírání prvků z hlavy nebo ocasu, nebo vkládání nebo odstraňování prvků uprostřed, je velmi rychlé.
Pole
Třída pole poskytuje dynamicky velikost, seřazené a celočíselné indexované pole objektů.
Mapa (označovaná také jako slovník)
Mapa je kolekce, která přidruží objekt klíče k objektu hodnoty.
Třídy kolekce založené na šablonách
Nejjednodušší způsob, jak implementovat typově bezpečnou kolekci, která obsahuje objekty libovolného typu, je použít jednu z tříd založených na šabloně MFC. Příklady těchto tříd naleznete v ukázce MFC COLLECT.
Následující tabulka uvádí třídy kolekcí založené na šablonách MFC.
Třídy šablon kolekce
Obsah kolekce | Pole | Seznamy | Mapy |
---|---|---|---|
Kolekce objektů libovolného typu | CArray |
CList |
CMap |
Kolekce ukazatelů na objekty libovolného typu | CTypedPtrArray |
CTypedPtrList |
CTypedPtrMap |
Třídy kolekce, které nejsou založené na šablonách
Pokud vaše aplikace již používá netemplate třídy MFC, můžete je dál používat. U nových kolekcí však doporučujeme používat třídy založené na šablonách. Následující tabulka uvádí třídy kolekce MFC, které nejsou založené na šablonách.
Nontemplate Collection – třídy
Pole | Seznamy | Mapy |
---|---|---|
CObArray |
CObList |
CMapPtrToWord |
CByteArray |
CPtrList |
CMapPtrToPtr |
CDWordArray |
CStringList |
CMapStringToOb |
CPtrArray |
CMapStringToPtr |
|
CStringArray |
CMapStringToString |
|
CWordArray |
CMapWordToOb |
|
CUIntArray |
CMapWordToPtr |
Charakteristiky tabulky tříd kolekcí MFC v tabulce Doporučení pro volbu třídy kolekce popisuje třídy kolekce MFC z hlediska těchto charakteristik (jiné než obrazce):
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