====== 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]]\\