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