Zalecenia dotyczące wybierania klasy kolekcji

Ten artykuł zawiera szczegółowe informacje, które pomogą Ci wybrać klasę kolekcji dla potrzeb konkretnej aplikacji.

Wybór klasy zbioru zależy od wielu czynników, w tym:

  • Funkcje kształtu klasa: zamówienia, indeksowania i wydajność, jak pokazano na Funkcje zbioru witryn kształt tabeli w dalszej części tego tematu

  • Czy klasa używa szablonów języka C++

  • Czy można szeregować elementy przechowywane w kolekcji

  • Czy elementy przechowywane w kolekcji mogą być składowane Diagnostics

  • Czy kolekcja jest typ palety

Poniższej tabeli Funkcje zbioru witryn kształt, zawiera podsumowanie właściwości kształtów dostępnych kolekcji.

  • Kolumny 2 i 3 opisują każdy kształt zamawiania i dostępu do właściwości.W tabeli termin "zamówione" oznacza, że kolejność, w której elementy są wstawiane i usuwane określa ich kolejność w kolekcji; Nie znaczy, że elementy są sortowane na ich zawartość.Termin "indeksowany" oznacza, że elementy w kolekcji mogą być pobierane przez wskaźnik liczby całkowitej, podobnie jak elementów w typowym tablicy.

  • Kolumny 4 i 5 opisują wydajność każdego kształtu.W aplikacjach, które wymagają wielu wstawienia do kolekcji szybkość wstawiania może być szczególnie ważne; dla innych aplikacji może być ważniejsza szybkość wyszukiwania.

  • Kolumna 6 opisano, czy każdy kształt dopuszczającą duplikowanie się elementów.

Kolekcja elementów kształtu

Kształt

Zamówione?

Indeksowane?

Wstawianie elementu

Wyszukiwanie określonego elementu

Zduplikowane elementy?

List

Tak

Nie

Szybka

Powolne

Tak

Tablica

Tak

Przez int

Powolne

Powolne

Tak

Mapa

Nie

Przez klucz

Szybka

Szybka

Nie (klucze) tak (wartości)

Poniższej tabeli Właściwości z kolekcji klasy MFC, podsumowuje inne ważne cechy szczególne kolekcja klas MFC jako przewodnik do zaznaczenia.Wybór może zależeć od czy klasa jest oparte na szablonach języka C++, czy jego elementy można szeregować za pośrednictwem dokumentu MFC serializacji mechanizmu, czy jego elementy mogą być składowane za pośrednictwem MFC diagnostycznych mechanizmu dumpingu lub czy klasa jest typ palety — to znaczy, czy może zagwarantować typ elementów przechowywanych w i pobrany z kolekcji oparty na klasie.

Charakterystyka klasy MFC kolekcji

Klasa

Używa języka C++

Szablony

Może być

Serializowana

Może być

po cenach dumpingowych

Wynosi

typ bezpieczny

CArray

Tak

Tak 1

Tak 1

Nie

CByteArray

Nie

Tak

Tak

Tak, 3

CDWordArray

Nie

Tak

Tak

Tak, 3

CList

Tak

Tak 1

Tak 1

Nie

CMap

Tak

Tak 1

Tak 1

Nie

CMapPtrToPtr

Nie

Nie

Tak

Nie

CMapPtrToWord

Nie

Nie

Tak

Nie

CMapStringToOb

Nie

Tak

Tak

Nie

CMapStringToPtr

Nie

Nie

Tak

Nie

CMapStringToString

Nie

Tak

Tak

Tak, 3

CMapWordToOb

Nie

Tak

Tak

Nie

CMapWordToPtr

Nie

Nie

Tak

Nie

CObArray

Nie

Tak

Tak

Nie

CObList

Nie

Tak

Tak

Nie

CPtrArray

Nie

Nie

Tak

Nie

CPtrList

Nie

Nie

Tak

Nie

CStringArray

Nie

Tak

Tak

Tak, 3

CStringList

Nie

Tak

Tak

Tak, 3

CTypedPtrArray

Tak

Zależy od 2

Tak

Tak

CTypedPtrList

Tak

Zależy od 2

Tak

Tak

CTypedPtrMap

Tak

Zależy od 2

Tak

Tak

CUIntArray

Nie

Nie

Tak

Tak, 3

CWordArray

Nie

Tak

Tak

Tak, 3

1.Do serializacji, należy jawnie wywołać obiektu kolekcji Serialize funkcja; aby zrzucić, należy jawnie wywołać jej Dump funkcji.Nie można użyć formularza ar << collObj do serializacji lub w formularzu dmp<< collObj do zrzutu. 

2.Uszeregowieniem zależy od odpowiedniego typu kolekcji.Na przykład, jeśli tablica wpisywanych wskaźnik jest oparty na CObArray, jest możliwy do serializacji; Jeśli na podstawie CPtrArray, nie jest możliwy do serializacji.Ogólnie rzecz biorąc klasy "Ptr" nie może być serializowany.

3.Po zaznaczeniu tak, w tej kolumnie, Klasa kolekcji nontemplate będzie typ palety, pod warunkiem korzystania zgodnie z przeznaczeniem.Na przykład, jeśli są przechowywane bajtów w CByteArray, tablica jest typ palety.Ale jeśli używasz go do przechowywania znaków, ich typ bezpieczeństwa jest mniej pewne.

Zobacz też

Zadania

Uzyskiwanie dostępu do wszystkich elementów członkowskich kolekcji

Koncepcje

Kolekcje

Klasy oparte na szablonach

Porady: tworzenie bezpiecznej kolekcji