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