Narzędzia użytkownika

Narzędzia witryny


opis_kontenera:map

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 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:

  • 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<const Key, T> 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

opis_kontenera/map.txt · ostatnio zmienione: 2008/12/07 19:07 przez sobol