2011-01-07 8 views

Odpowiedz

6

Reading Container Classes:

QMap<Key, T> 
This provides a dictionary (associative array) that maps keys of type Key to values of type T. Normally each key is associated with a single value. QMap stores its data in Key order; if order doesn't matter QHash is a faster alternative. 

QMultiMap<Key, T> 
This is a convenience subclass of QMap that provides a nice interface for multi-valued maps, i.e. maps where one key can be associated with multiple values. 

wygląda zarówno może wykonać pracę. W tym dokumencie jest także sekcja Algorithmic Complexity, w której widać, że obie klasy mają tę samą złożoność.

Wybrałbym QMultiMap tylko po to, aby lepiej udokumentować fakt, że zamierzam trzymać wiele wartości za pomocą tego samego klucza.

4

Obie mogą służyć do tego celu. QMultiMap jest w rzeczywistości podklasą QMap.

Jeśli są chętni, aby mieć wiele wartości dla jednego klucza, można użyć: QMap: do wrzucania użytkowania insertMulti QMultiMap: do wrzucania wstawić użycie

Jeśli są chętni, aby mieć jedną wartość dla pojedynczego klawisza, można użyć: QMap: do wstawienia wstawki użytkowej QMultiMap: do wstawienia użyj zamień

Widać, że oba serwery mogą służyć obu celom. Ale każdy ma unikalne domyślne zachowanie, które pasuje do jego nazwy. Ponadto, każdy ma kilka metod lub operatorów, co jest wygodne dla pojedynczego/wielu.

Lepiej wybrać typ w zależności od potrzeb. To dobra praktyka. Na przykład, jeśli używasz QMap do przechowywania pojedynczego klucza wielu wartości, inna osoba przechodząca przez twoje klasy może odnieść wrażenie, że chcesz zapisać pary pojedynczych par kluczy (z rodzaju danych). Podobnie, jeśli używasz QMultiMap, każdy czytający definicję może pomyśleć, że dane będą miały wiele wartości dla tego samego klucza.

Powiązane problemy