Kolekcje
Biblioteka klas programu Microsoft Foundation udostępnia klasy kolekcji do zarządzania grupami obiektów. Te klasy są dwoma typami:
Uwaga
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, które pomogą Ci zdecydować, co jest najlepsze dla programu, zobacz Rekomendacje wybieranie klasy kolekcji.
List
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 rozmiar, uporządkowaną i indeksowaną liczbę całkowitą tablicy obiektów.
Mapa (znana również jako słownik)
Mapa to kolekcja, która kojarzy obiekt klucza z obiektem wartości.
Klasy kolekcji oparte na szablonach
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 | Listy | Mapy |
---|---|---|---|
Kolekcje obiektów dowolnego typu | CArray |
CList |
CMap |
Kolekcje wskaźników do obiektów 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 nontemplate
Tablice | Listy | Mapy |
---|---|---|
CObArray |
CObList |
CMapPtrToWord |
CByteArray |
CPtrList |
CMapPtrToPtr |
CDWordArray |
CStringList |
CMapStringToOb |
CPtrArray |
CMapStringToPtr |
|
CStringArray |
CMapStringToString |
|
CWordArray |
CMapWordToOb |
|
CUIntArray |
CMapWordToPtr |
Tabela Charakterystyki klas kolekcji MFC w Rekomendacje na potrzeby 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ć po cenach dumpingowych do diagnostyki
Czy kolekcja jest bezpieczna pod typem