====== std::map ====== //Autor: Michał Sobiecki//\\ Mapa jest kontenerem asocjacyjnym, czyli takim, w którym oprócz wartości (danych) przechowywane są również unikalne klucze nie koniecznie będące zmiennymi całkowitymi.\\ \\ 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.\\ \\ \\ template < class Key, class T, class Compare = less, class Allocator = allocator > > class map; 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. typedef pair value_type; 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]]\\