Mapa w standardowej bibliotece szablonów C++ (STL)

Mapy są kontenery skojarzone które przechowują elementy w zmapowany sposób. Każdy element ma wartość klucza i wartość mapowaną. Żadne dwie zmapowane wartości nie mogą mieć tych samych wartości kluczy.

std::map jest szablonem klasy dla kontenerów map i jest zdefiniowany w pliku nagłówkowym.

Podstawowe funkcje członkowskie std::map

Niektóre podstawowe funkcje związane z std::map to:

  • zaczynać() – Zwraca iterator do pierwszego elementu na mapie.
  • koniec() – Zwraca iterator do elementu teoretycznego, który następuje po ostatnim elemencie na mapie.
  • rozmiar() – Zwraca liczbę elementów na mapie.
  • największy rozmiar() – Zwraca maksymalną liczbę elementów, jakie może pomieścić mapa.
  • pusty() – Zwraca informację, czy mapa jest pusta.
  • wstaw parę (wartość klucza, wartość mapy) – Dodaje nowy element do mapy.
  • usuń(pozycja iteratora) – Usuwa element z pozycji wskazanej przez iterator.
  • usuń (stała g) – Usuwa parę klucz-wartość „g” z mapy.
  • jasne() – Usuwa wszystkie elementy z mapy.

Przykłady std::map

Poniższe przykłady pokazują, jak wykonywać podstawowe operacje na kontenerach map.

Przykład 1: funkcja Begin() i end().

C++




// C++ program to illustrate the begin and end iterator> #include> #include> #include> using> namespace> std;> int> main()> {> > // Create a map of strings to integers> > mapint>poseł; // Wstaw wartości do mapy mp['one'] = 1; mp['dwa'] = 2; mp['trzy'] = 3; // Uzyskaj iterator wskazujący pierwszy element w // mapie mapint>::iterator it = mp.begin(); // Iteruj po mapie i wypisz elementy while (it != mp.end()) { cout < < 'Key: ' < < ', Value: ' ++it; } return 0; }>

Wyjście

Key: one, Value: 1 Key: three, Value: 3 Key: two, Value: 2 

Złożoność powyższej metody:

Złożoność czasowa: O(n) gdzie n jest rozmiarem mapy.

Przestrzeń pomocnicza: NA)

Przykład 2: funkcja rozmiaru().

C++




// C++ program to illustrate the size() function> #include> #include> #include> using> namespace> std;> int> main()> {> > // Create a map of strings to integers> > mapint>mapa; // Wstaw wartości do mapy map['one'] = 1; map['dwa'] = 2; map['trzy'] = 3; // Wydrukuj rozmiar mapy < < 'Size of map: ' < < map.size() < < endl; return 0; }>

Wyjście

Size of map: 3 

Złożoność powyższej metody:

Złożoność czasowa: O(1).

Przykład 3: Implementacja mapy

CPP




// CPP Program to demonstrate the implementation in Map> // divyansh mishra -->divyanshmishra101010> #include> #include> #include> using> namespace> std;> int> main()> {> > // empty map container> > map <> int> ,> int> >gquiz1;> > // insert elements in random order> > gquiz1.insert(pair <> int> ,> int> >(1, 40));> > gquiz1.insert(pair <> int> ,> int> >(2, 30));> > gquiz1.insert(pair <> int> ,> int> >(3, 60));> > gquiz1.insert(pair <> int> ,> int> >(4, 20));> > gquiz1.insert(pair <> int> ,> int> >(5, 50));> > gquiz1.insert(pair <> int> ,> int> >(6, 50));> > // another way of inserting a value in a map> > gquiz1[7] = 10;> > // printing map gquiz1> > map <> int> ,> int> >::iterator itr;> > cout < <> ' The map gquiz1 is : '> ;> > cout < <> ' KEY ELEMENT '> ;> > for> (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) {> > cout < <> ' '> ' ' < < ' '; } cout < < endl; // assigning the elements from gquiz1 to gquiz2 map gquiz2(gquiz1.begin(), gquiz1.end()); // wypisz wszystkie elementy mapy gquiz2 cout < < ' The map gquiz2 after' < < ' assign from gquiz1 is : '; cout < < ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout < < ' ' ' ' < < ' '; } cout < < endl; // remove all elements up to // element with key=3 in gquiz2 cout < < ' gquiz2 after removal of' ' elements less than key=3 : '; cout < < ' KEY ELEMENT '; gquiz2.erase(gquiz2.begin(), gquiz2.find(3)); for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout < < ' ' ' ' < < ' '; } // remove all elements with key = 4 int num; num = gquiz2.erase(4); cout < < ' gquiz2.erase(4) : '; cout < < num < < ' removed '; cout < < ' KEY ELEMENT '; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout < < ' ' ' ' < < ' '; } cout < < endl; // lower bound and upper bound for map gquiz1 key = 5 cout < < 'gquiz1.lower_bound(5) : ' < < ' KEY = '; cout ' '; cout < < ' ELEMENT = ' < < endl; cout < < 'gquiz1.upper_bound(5) : ' < < ' KEY = '; cout ' '; cout < < ' ELEMENT = ' < < endl; return 0; }>

Wyjście

The map gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 The map gquiz2 after assign from gquiz1 is : KEY ELEMENT 1 40 2 30 3 60 4 20 5 50 6 50 7 10 gquiz2 after remov... 

Złożoność powyższej metody:

Złożoność czasowa: O(n log(n)), ponieważ n jest rozmiarem mapy
Przestrzeń pomocnicza: NA)

Przykład 4: Implementacja mapy liczb całkowitych

C++




// C++ program to implement map container> #include> #include> #include> using> namespace> std;> int> main()> {> > // Create a map of strings to integers> > mapint>mapa; // Wstaw wartości do mapy map['one'] = 1; map['dwa'] = 2; map['trzy'] = 3; // Wydrukuj wartości z mapy cout < < 'Key: one, Value: ' < < map['one'] < < endl; cout < < 'Key: two, Value: ' < < map['two'] < < endl; cout < < 'Key: three, Value: ' < < map['three'] < < endl; // Check if a key is in the map if (map.count('four')>0) {przym < < 'Key 'four' is in the map' < < endl; } else { cout < < 'Key 'four' is not in the map' < < endl; } return 0; }>

Wyjście

Key: one, Value: 1 Key: two, Value: 2 Key: three, Value: 3 Key 'four' is not in the map 

Lista wszystkich funkcji std::map

Poniższa tabela zawiera wszystkie funkcje zdefiniowane w klasie std::map.

Funkcjonować

Definicja

mapa::wstaw()

Wstaw elementy z określonym kluczem do kontenera mapy –> O(log n)

mapa:: liczba()

Zwraca liczbę dopasowań do elementu z parą klucz-wartość „g” na mapie. –> O(log n)

mapa równa_zakres()

Zwraca iterator par. Para odnosi się do granic zakresu obejmującego wszystkie elementy w kontenerze, których klucz jest odpowiednikiem k.

wymazanie mapy()

Służy do usuwania elementów z kontenera –> O(log n)

renderowanie mapy()

Zwraca iterator odwrotny wskazujący element teoretyczny tuż przed pierwszą parą klucz-wartość na mapie (która jest uważana za jej odwrotny koniec).

mapa rbegin()

Zwraca iterator odwrotny, który wskazuje na ostatni element mapy.

znalezienie mapy()

Zwraca iterator do elementu z parą klucz-wartość „g” na mapie, jeśli zostanie znaleziony, w przeciwnym razie zwraca iterator do końca.

mapa crbegin() i crend()

crbegin() zwraca stały iterator odwrotny odnoszący się do ostatniego elementu w kontenerze mapy. crend() zwraca stały iterator odwrotny wskazujący element teoretyczny przed pierwszym elementem na mapie.

mapuj cbegin() i cend()

cbegin() zwraca stały iterator odnoszący się do pierwszego elementu w kontenerze mapy. cend() zwraca stały iterator wskazujący element teoretyczny, który następuje po ostatnim elemencie multimapy.

miejsce na mapie()

Wstawia klucz i jego element do kontenera mapy.

mapa max_size()

Zwraca maksymalną liczbę elementów, jakie może pomieścić kontener mapy –> O(1)

mapa górna granica()

Zwraca iterator do pierwszego elementu, który jest odpowiednikiem odwzorowanej wartości z parą klucz-wartość „g” lub zdecydowanie przejdzie po elemencie z parą klucz-wartość „g” na mapie

operator mapy=

Przypisuje zawartość kontenera do innego kontenera, zastępując jego bieżącą zawartość.

mapa dolna granica()

Zwraca iterator do pierwszego elementu, który jest równoważny zmapowanej wartości z parą klucz-wartość „g” lub zdecydowanie nie przejdzie przed elementem z parą klucz-wartość „g” na mapie –> O(log n)

mapa emplace_hint()

Wstawia klucz i jego element do kontenera mapy z podaną podpowiedzią.

mapuj wartość_komp()

Zwraca obiekt określający kolejność elementów na mapie (domyślnie „ <”).

mapuj klucz_comp()

Zwraca obiekt określający kolejność elementów na mapie (domyślnie „ <”).

rozmiar mapy()

Zwraca liczbę elementów na mapie.

mapa::pusta()

Zwraca informację, czy mapa jest pusta

mapa::begin() i end()

Begin() zwraca iterator do pierwszego elementu na mapie. end() zwraca iterator do elementu teoretycznego, który następuje po ostatnim elemencie na mapie

mapa::operator[]

Operator ten służy do odwoływania się do elementu znajdującego się na pozycji podanej wewnątrz operatora.

mapa::wyczyść()

Usuwa wszystkie elementy z mapy.

map::at() i map::swap()

Funkcja at() służy do zwrócenia referencji do elementu powiązanego z kluczem k. Funkcja swap() służy do wymiany zawartości dwóch map, ale mapy muszą być tego samego typu, chociaż rozmiary mogą się różnić.