Udostępnij za pośrednictwem


Zalecenia dotyczące wyboru klasy kolekcji

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

Wybór klasy kolekcji zależy od szeregu czynników, takich jak:

  • Funkcje kształtu klasa: kolejności indeksowania i wydajności, jak pokazano w Kolekcji elementów kształtu 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 można zatopienia Diagnostics

  • Czy kolekcja jest typ palety

Poniższej tabeli Kolekcji elementów kształtu, zawiera podsumowanie właściwości kształtów dostępnych kolekcji.

  • W kolumnach 2 i 3 opisu każdego kształtu zamawianie i dostępu właściwości.W tabeli termin "zamówione" oznacza, że zamówienie wstawione i usunięte elementy określa ich kolejności w kolekcji; nie oznacza to, że elementy są sortowane na ich zawartość.Termin "indeksowane" oznacza, że elementy w kolekcji mogą być pobierane przez indeks integer, podobnie jak elementy w tablicy typowe.

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

  • W kolumnie 6 opisuje, czy każdy kształt zezwala na zduplikowane elementy.

Kolekcja elementów kształtu

Kształt

Zamówione?

Indeksowane?

Wstaw element

Wyszukiwanie elementów

Zduplikowane elementy?

Lista

Tak

Nr

Szybki

Powolne

Tak

Tablica

Tak

Przez int

Powolne

Powolne

Tak

Mapa

Nr

Klucz

Szybki

Szybki

Tak (wartości) (kluczy)

Poniższej tabeli Właściwości z klasy MFC kolekcji, podsumowuje inne ważne cechy szczególne klasy kolekcji MFC jako przewodnik do zaznaczenia.Wybór zależeć czy klasa jest oparte na szablonach języka C++, czy jego elementy można szeregować za pośrednictwem dokumentu MFC firmy serializacji mechanizmu, czy jego elementy można zatopienia za pośrednictwem diagnostycznych mechanizmu dumpingu MFC firmy lub czy klasa jest typ palety — oznacza to, czy można zagwarantować typu elementy przechowywane w i źródło kolekcji, oparty na klasie.

Właściwości klasy kolekcji MFC

Klasa

Używa języka C++

Szablony

Może być

serializowany

Może być

po cenach dumpingowych

Jest

Typ palety

CArray

Tak

Tak 1

Tak 1

Nr

CByteArray

Nr

Tak

Tak

Tak 3

CDWordArray

Nr

Tak

Tak

Tak 3

CList

Tak

Tak 1

Tak 1

Nr

CMap

Tak

Tak 1

Tak 1

Nr

CMapPtrToPtr

Nr

Nr

Tak

Nr

CMapPtrToWord

Nr

Nr

Tak

Nr

CMapStringToOb

Nr

Tak

Tak

Nr

CMapStringToPtr

Nr

Nr

Tak

Nr

CMapStringToString

Nr

Tak

Tak

Tak 3

CMapWordToOb

Nr

Tak

Tak

Nr

CMapWordToPtr

Nr

Nr

Tak

Nr

CObArray

Nr

Tak

Tak

Nr

CObList

Nr

Tak

Tak

Nr

CPtrArray

Nr

Nr

Tak

Nr

CPtrList

Nr

Nr

Tak

Nr

CStringArray

Nr

Tak

Tak

Tak 3

CStringList

Nr

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

Nr

Nr

Tak

Tak 3

CWordArray

Nr

Tak

Tak

Tak 3

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

2.Uszeregowieniem zależy od podstawowego typu kolekcji.Na przykład, jeśli tablica maszynowy 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 nie może być serializowany klas "Ptr".

3.Jeśli oznakowane tak, w tej kolumnie, Klasa kolekcji nontemplate jest typ palety, pod warunkiem, że można używać jako przeznaczone.Na przykład przechowywać bajtów w CByteArray, tablica jest typ palety.Ale jeśli używasz do przechowywania znaków bezpieczeństwa jej typ jest mniej pewne.

Zobacz też

Zadania

Dostęp do wszystkich członków kolekcji

Koncepcje

Kolekcje

Klas opartych na szablonie

Jak: tworzenie kolekcji typ palety