Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Biblioteka klas programu Microsoft Foundation udostępnia klasy kolekcji do zarządzania grupami obiektów. Te klasy są dwoma typami:
Uwaga / Notatka
Jeśli kod używa już klas kolekcji innych niżtemplate, możesz nadal ich używać. W przypadku pisania nowych klas kolekcji bezpiecznych typów dla własnych typów danych zalecamy użycie nowszych klas opartych na szablonach.
Kształty kolekcji
Klasa kolekcji charakteryzuje się jej "kształtem" i typami elementów. Kształt odnosi się do sposobu organizowania i przechowywania obiektów przez kolekcję. MFC udostępnia trzy podstawowe kształty kolekcji: listy, tablice i mapy (znane również jako słowniki). Możesz wybrać kształt kolekcji, który jest najbardziej odpowiedni dla konkretnego problemu programistycznego.
Każdy z trzech dostarczonych kształtów kolekcji jest krótko opisany w dalszej części tego tematu. Aby porównać funkcje kształtów, aby ułatwić podjęcie decyzji, która jest najlepsza dla programu, zobacz Zalecenia dotyczące wybierania klasy kolekcji.
Lista
Klasa list zawiera uporządkowaną, nieindeksowaną listę elementów zaimplementowaną jako podwójnie połączoną listę. Lista ma "głowę" i "ogon", a dodawanie lub usuwanie elementów z głowy lub ogona albo wstawianie lub usuwanie elementów w środku jest bardzo szybkie.
Tablica
Klasa tablicy udostępnia dynamicznie rozmiarowaną, uporządkowaną i indeksowaną liczbami całkowitymi tablicę obiektów.
Mapa (znana również jako słownik)
Mapa to kolekcja, która kojarzy obiekt klucza z obiektem wartości.
klasy kolekcji Template-Based
Najprostszym sposobem zaimplementowania bezpiecznej kolekcji typu zawierającej obiekty dowolnego typu jest użycie jednej z klas opartych na szablonach MFC. Przykłady tych klas można znaleźć w przykładzie COLLECT MFC.
W poniższej tabeli wymieniono klasy kolekcji oparte na szablonach MFC.
Klasy szablonów kolekcji
| Zawartość kolekcji | Tablice | Listach | Mapy |
|---|---|---|---|
| Kolekcje obiektów dowolnego typu | CArray |
CList |
CMap |
| Kolekcje wskaźników na obiekty dowolnego typu | CTypedPtrArray |
CTypedPtrList |
CTypedPtrMap |
Klasy kolekcji nie oparte na szablonach
Jeśli aplikacja używa już klas nontemplate MFC, możesz nadal ich używać. Jednak w przypadku nowych kolekcji zalecamy używanie klas opartych na szablonach. W poniższej tabeli wymieniono klasy kolekcji MFC, które nie są oparte na szablonach.
Klasy kolekcji nieszablonowych
| Tablice | Listach | Mapy |
|---|---|---|
CObArray |
CObList |
CMapPtrToWord |
CByteArray |
CPtrList |
CMapPtrToPtr |
CDWordArray |
CStringList |
CMapStringToOb |
CPtrArray |
CMapStringToPtr |
|
CStringArray |
CMapStringToString |
|
CWordArray |
CMapWordToOb |
|
CUIntArray |
CMapWordToPtr |
Tabela Charakterystyka klas kolekcji MFC w temacie Zalecenia dotyczące wybierania klasy kolekcji opisuje klasy kolekcji MFC pod względem tych cech (innych niż kształt):
Czy klasa używa szablonów języka C++
Czy elementy przechowywane w kolekcji mogą być serializowane
Czy elementy przechowywane w kolekcji mogą być wyładowane do diagnostyki
Czy kolekcja jest bezpieczna pod typem