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