logo

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

math.pow Java




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