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 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 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<Key>, class Allocator = allocator<pair<const Key,T> > > class map;
Gdzie:
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<const Key, T> value_type;
Tak więc wyłuskany iterator (*i) wskazuje na znaleziony obiekt value_type.
begin | Zwraca Iterator na początek mapy. |
end | Zwraca Iterator na koniec mapy (nie istniejący w mapie). |
empty | sprawdza, czy mapa zawiera jakiekolwiek elementy |
size | zwraca liczbę elementów w mapie |
max_size | zwraca maksymalną liczbę elementów w mapie |
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 |
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 |