Narzędzia użytkownika

Narzędzia witryny


opis_kontenera:map

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision
Previous revision
opis_kontenera:map [2008/12/07 18:24]
sobol
opis_kontenera:map [2008/12/07 19:07] (aktualna)
sobol
Linia 7: Linia 7:
 Przykładem użycia mapy może być książka telefoniczna (powiązanie nazwisko (string) -> numer telefonu) lub interaktywny model nieba (powiązanie położenie planety (punkt) -> informacje o planecie). Innym przykładem użycia mapy jest {{:​opis_kontenera:​map.cpp|menedżer zasobów}}, lub algorytm wczytywania plików eksportowanych przez program Milkshape3d do indeksowanego bufora wierzchołków.\\ Przykładem użycia mapy może być książka telefoniczna (powiązanie nazwisko (string) -> numer telefonu) lub interaktywny model nieba (powiązanie położenie planety (punkt) -> informacje o planecie). Innym przykładem użycia mapy jest {{:​opis_kontenera:​map.cpp|menedżer zasobów}}, lub algorytm wczytywania plików eksportowanych przez program Milkshape3d do indeksowanego bufora wierzchołków.\\
 \\ \\
 +W wewnętrznej implementacji mapy obiekty są posortowane według rosnącej wartości kluczy. Projektanci mapy położyli główny nacisk na szybkość odwoływania się do konkretnych elementów według kluczy. Z założenia klucze muszą być unikalne - w przeciwieństwie do [[opis kontenera: multimap|multimapy]] nie mogą istnieć dwa elementy o jednakowym kluczu. Każdy element stanowi para klucz - wartość mapowana.\\
 +\\ \\
 +<code c++>
 +template < class Key, class T, class Compare = less<​Key>,​
 +           class Allocator = allocator<​pair<​const Key,T> > > class map;
 +</​code>​
 +Gdzie:
 + * Key - typ jaki będzie przyjmować unikalny dla każdego elementu klucz.
 + * T - typ wartości mapowanej, danych identyfikowanych z kluczem.
 + * Compare - klasa porównująca dwa elementy typu Key, zwracająca true jeśli pierwszy z parametrów powinien być umieszczony w mapie przed drugim (jest nie większy).
 + * Allocator - typ obiektu alokującego. Domyślnie używana jest klasa allocator.\\
 +\\
 +=== Iteratory ===
 +Mapa wspiera iteratory dwukierunkowe. Przy ich pomocy można odwołać się zarówno do klucza jak i danych mapowanych, za pośrednictwem std::pair, przy czym pole first zawsze zawiera klucz, natomiast second zawsze zawiera dane mapowane.
 +<code c++>
 +typedef pair<​const Key, T> value_type;
 +</​code>​
 +Tak więc wyłuskany iterator (*i) wskazuje na znaleziony obiekt value_type.
 +
 +=== Najważniejsze metody ===
 +== Iteratory ==
 +| begin | Zwraca Iterator na początek mapy. |
 +| end | Zwraca Iterator na koniec mapy (nie istniejący w mapie). |
 +== Zawartość mapy ==
 +| empty | sprawdza, czy mapa zawiera jakiekolwiek elementy |
 +| size | zwraca liczbę elementów w mapie |
 +| max_size | zwraca maksymalną liczbę elementów w mapie |
 +== Modyfikatory ==
 +| insert | wstawia nowy element |
 +| erase | usuwa istniejący element |
 +| swap | zamienia zawartość mapy która wywołuje z mapą podaną w parametrze |
 +| clear | usuwa zawartość mapy |
 +== Inne ==
 +| find | znajduje element o zadanym kluczu w mapie |
 +| count | zlicza elementy o zadanym kluczu w mapie (może zwrócić 0 lub 1) |
 +| operator[] | umożliwia dostęp do elementu o kluczu podanym operatorowi |
 +\\
 +=== Więcej informacji ===
 +[[http://​msdn.microsoft.com/​en-us/​library/​s44w4h2s.aspx|MSDN]]\\
 +[[http://​www.sgi.com/​tech/​stl/​Map.html|SGI Doc]]\\
 +[[http://​www.cplusplus.com/​reference/​stl/​map/​|C++ Reference]]\\
 +[[http://​en.wikipedia.org/​wiki/​Map_(C%2B%2B_container)|Wikipedia]]\\
  
opis_kontenera/map.1228670652.txt.gz · ostatnio zmienione: 2008/12/07 18:24 przez sobol