Mapy są częścią C++ STL (Standard Template Library). Mapy to skojarzone kontenery przechowujące posortowaną parę klucz-wartość, w której każdy klucz jest unikalny i można go wstawiać lub usuwać, ale nie można go zmieniać. Wartości powiązane z kluczami można zmieniać.
Na przykład: Mapę pracowników, gdzie identyfikator pracownika jest kluczem, a nazwa jest wartością, można przedstawić jako:
Klucze | Wartości |
---|---|
101 | Nikita |
102 | Rudzik |
103 | Głęboko |
104 | Jan |
Składnia
template <class key, map::key_type class t, map::mapped_type compare="less," map::key_compare alloc="allocator<pair"> // map::allocator_type > class map; </class>
Parametr
klucz: Kluczowy typ danych, który ma być przechowywany na mapie.
typ: Typ danych wartości, która ma być przechowywana na mapie.
porównywać: Klasa porównawcza, która przyjmuje dwa argumenty tego samego typu bool i zwraca wartość. Ten argument jest opcjonalny, a predykat binarny less jest wartością domyślną.
przydział: Typ obiektu alokatora. Argument ten jest opcjonalny, a wartością domyślną jest alokator.
Tworzenie mapy
Mapy można łatwo utworzyć za pomocą następującej instrukcji:
typedef pair value_type;
Powyższy formularz posłuży do utworzenia mapy z kluczem typu Typ klucza i wartość typu typ wartości. Ważną rzeczą jest to, że klucz mapy i odpowiadające mu wartości są zawsze wstawiane jako para, nie można wstawić samego klucza lub samej wartości na mapie.
Przykład 1
#include #include #include #include using namespace std; int main() { map Employees; // 1) Assignment using array index notation Employees[101] = 'Nikita'; Employees[105] = 'John'; Employees[103] = 'Dolly'; Employees[104] = 'Deep'; Employees[102] = 'Aman'; cout << 'Employees[104]=' << Employees[104] << endl << endl; cout << 'Map size: ' << Employees.size() << endl; cout << endl << 'Natural Order:' << endl; for( map::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } cout << endl << 'Reverse Order:' << endl; for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } }
Wyjście:
Employees[104]=Deep Map size: 5 Natural Order: 101: Nikita 102: Aman 103: Dolly 104: Deep 105: John Reverse Order: 105: John 104: Deep 103: Dolly 102: Aman 101: Nikita
Funkcje członkowskie
Poniżej znajduje się lista wszystkich funkcji składowych mapy:
Budowniczy/Niszczyciel
Funkcje | Opis |
---|---|
konstruktorzy | Konstruuj mapę |
niszczyciele | Destruktor mapy |
operator= | Skopiuj elementy mapy na inną mapę. |
Iteratory
Funkcje | Opis |
---|---|
zaczynać | Zwraca iterator wskazujący pierwszy element na mapie. |
czacznij | Zwraca iterator const wskazujący pierwszy element na mapie. |
koniec | Zwraca iterator wskazujący na koniec przeszły. |
kilka | Zwraca stały iterator wskazujący na koniec. |
zacznij | Zwraca iterator odwrotny wskazujący na koniec. |
sprawia | Zwraca iterator odwrotny wskazujący na początek. |
zacznij | Zwraca stały iterator odwrotny wskazujący na koniec. |
uważać | Zwraca stały iterator odwrotny wskazujący na początek. |
Pojemność
Funkcje | Opis |
---|---|
pusty | Zwraca wartość true, jeśli mapa jest pusta. |
rozmiar | Zwraca liczbę elementów na mapie. |
największy rozmiar | Zwraca maksymalny rozmiar mapy. |
Dostęp do elementu
Funkcje | Opis |
---|---|
operator[] | Pobierz element o podanym kluczu. |
Na | Pobierz element o podanym kluczu. |
Modyfikatory
Funkcje | Opis |
---|---|
wstawić | Wstaw element na mapę. |
usuwać | Usuń elementy z mapy. |
zamieniać | Wymień zawartość mapy. |
jasne | Usuń wszystkie elementy mapy. |
Lokalizacja | Zbuduj i wstaw nowe elementy do mapy. |
miejsce_wskazówka | Konstruuj i wstawiaj nowe elementy na mapę za pomocą podpowiedzi. |
Obserwatorzy
Funkcje | Opis |
---|---|
klucz_komp | Zwróć kopię kluczowego obiektu porównania. |
wartość_komp | Zwróć kopię obiektu porównania wartości. |
Operacje
Funkcje | Opis |
---|---|
znajdować | Wyszukaj element o podanym kluczu. |
liczyć | Pobiera liczbę elementów pasujących do podanego klucza. |
Dolna granica | Zwraca iterator do dolnej granicy. |
Górna granica | Zwraca iterator do górnej granicy. |
równy_zakres | Zwraca zakres elementów pasujących do podanego klucza. |
Alokator
Funkcje | Opis |
---|---|
get_allocator | Zwraca obiekt alokatora, który jest używany do konstruowania mapy. |
Funkcje przeciążone niebędące członkami
Funkcje | Opis |
---|---|
operator== | Sprawdza, czy dwie mapy są równe, czy nie. |
operatorze!= | Sprawdza, czy dwie mapy są równe, czy nie. |
operator< | Sprawdza, czy pierwsza mapa jest mniejsza od drugiej, czy nie. |
operator<=< td> | Sprawdza, czy pierwsza mapa jest mniejsza lub równa innej, czy nie. | =<>
operatora> | Sprawdza, czy pierwsza mapa jest większa od drugiej, czy nie. |
operator>= | Sprawdza, czy pierwsza mapa jest większa niż równa drugiej, czy nie. |
zamieniać() | Zamienia element dwóch map. |