Preslikava v standardni knjižnici predlog C++ (STL)

Zemljevidi so asociativni vsebniki ki shranjujejo elemente na preslikan način. Vsak element ima ključno vrednost in preslikano vrednost. Dve preslikani vrednosti ne moreta imeti enakih ključnih vrednosti.

std::map je predloga razreda za vsebnike zemljevidov in je definirana znotraj datoteke glave.

Osnovne funkcije članov std::map

Nekatere osnovne funkcije, povezane s std::map, so:

  • začeti() – Vrne iterator prvemu elementu na zemljevidu.
  • konec () – Vrne iterator teoretičnemu elementu, ki sledi zadnjemu elementu v preslikavi.
  • velikost () – Vrne število elementov na zemljevidu.
  • max_size() – Vrne največje število elementov, ki jih zemljevid lahko vsebuje.
  • prazno() – Vrne, ali je zemljevid prazen.
  • par vstavi (ključna vrednost, preslikana vrednost) – Na zemljevid doda nov element.
  • izbriši (položaj iteratorja) – Odstrani element na položaju, na katerega kaže iterator.
  • izbriši (const g) – Odstrani ključ-vrednost 'g' z zemljevida.
  • počisti() – Odstrani vse elemente z zemljevida.

Primeri std::map

Naslednji primeri prikazujejo, kako izvajati osnovne operacije na vsebnikih zemljevidov.

Primer 1: Funkciji begin() in 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>mp; // Vstavi nekaj vrednosti v zemljevid mp['one'] = 1; mp['dva'] = 2; mp['tri'] = 3; // Pridobite iterator, ki kaže na prvi element v mapint mapint>::iterator it = mp.begin(); // Iteracija skozi zemljevid in tiskanje elementov while (it != mp.end()) { cout < < 'Key: ' < < ', Value: ' ++it; } return 0; }>

Izhod

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

Kompleksnost zgornje metode:

Časovna zahtevnost: O(n), kjer je n velikost zemljevida.

Pomožni prostor: O(n)

Primer 2: funkcija size().

C++




// C++ program to illustrate the size() function> #include> #include> #include> using> namespace> std;> int> main()> {> > // Create a map of strings to integers> > mapint>zemljevid; // Vstavi nekaj vrednosti v zemljevid map['one'] = 1; zemljevid['dva'] = 2; zemljevid['tri'] = 3; // Natisni velikost zemljevida cout < < 'Size of map: ' < < map.size() < < endl; return 0; }>

Izhod

Size of map: 3 

Kompleksnost zgornje metode:

Časovna zahtevnost: O(1).

Primer 3: Implementacija zemljevida

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> >gkviz1;> > // 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()); // natisni vse elemente zemljevida 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; }>

Izhod

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

Kompleksnost zgornje metode:

Časovna zahtevnost: O(n log(n)), saj je n velikost zemljevida
Pomožni prostor: O(n)

Primer 4: Implementacija preslikave celih števil

C++




// C++ program to implement map container> #include> #include> #include> using> namespace> std;> int> main()> {> > // Create a map of strings to integers> > mapint>zemljevid; // Vstavi nekaj vrednosti v zemljevid map['one'] = 1; zemljevid['dva'] = 2; zemljevid['tri'] = 3; // Natisni vrednosti v zemljevidu 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) { izhod < < 'Key 'four' is in the map' < < endl; } else { cout < < 'Key 'four' is not in the map' < < endl; } return 0; }>

Izhod

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

Seznam vseh funkcij std::map

Naslednja tabela vsebuje vse funkcije, definirane znotraj razreda std::map.

funkcija

Opredelitev

map::insert()

Vstavi elemente z določenim ključem v vsebnik zemljevida –> O(log n)

zemljevid:: štetje()

Vrne število ujemanj z elementom s ključno vrednostjo »g« na zemljevidu. –> O(log n)

preslikava equal_range()

Vrne iterator parov. Par se nanaša na meje obsega, ki vključuje vse elemente v vsebniku, ki imajo ključ, enak k.

brisanje zemljevida ()

Uporablja se za brisanje elementov iz vsebnika –> O(log n)

zemljevid rend()

Vrne povratni iterator, ki kaže na teoretični element tik pred prvim parom ključ-vrednost v preslikavi (ki se šteje za njegov povratni konec).

zemljevid rbegin()

Vrne povratni iterator, ki kaže na zadnji element zemljevida.

map find()

Vrne iterator elementu s ključno vrednostjo 'g' na zemljevidu, če je najden, drugače vrne iterator na konec.

preslikava crbegin() in crend()

crbegin() vrne stalni povratni iterator, ki se nanaša na zadnji element v vsebniku zemljevida. crend() vrne stalni povratni iterator, ki kaže na teoretični element pred prvim elementom v preslikavi.

preslikava cbegin() in cend()

cbegin() vrne stalni iterator, ki se nanaša na prvi element v vsebniku zemljevida. cend() vrne stalni iterator, ki kaže na teoretični element, ki sledi zadnjemu elementu v multimapu.

zemljevid emplace()

Vstavi ključ in njegov element v vsebnik zemljevida.

zemljevid max_size()

Vrne največje število elementov, ki jih lahko vsebuje vsebnik zemljevida –> O(1)

preslikava upper_bound()

Vrne iterator prvemu elementu, ki je enakovreden preslikani vrednosti s ključno vrednostjo »g« ali bo zagotovo šel za elementom s ključno vrednostjo »g« na preslikavi

operater zemljevida=

Dodeli vsebino vsebnika drugemu vsebniku in nadomesti njegovo trenutno vsebino.

preslikava bottom_bound()

Vrne iterator prvemu elementu, ki je enakovreden preslikani vrednosti s ključno vrednostjo 'g' ali zagotovo ne bo šel pred elementom s ključno vrednostjo 'g' v preslikavi –> O(log n)

zemljevid emplace_hint()

Vstavi ključ in njegov element v vsebnik zemljevida z danim namigom.

map value_comp()

Vrne objekt, ki določa, kako so elementi na zemljevidu urejeni (» <« privzeto).

preslikava key_comp()

Vrne objekt, ki določa, kako so elementi na zemljevidu urejeni (» <« privzeto).

zemljevid::velikost()

Vrne število elementov na zemljevidu.

zemljevid::prazno()

Vrne, ali je zemljevid prazen

map::begin() in end()

begin() vrne iterator prvemu elementu v preslikavi. end() vrne iterator teoretičnemu elementu, ki sledi zadnjemu elementu v preslikavi

map::operator[]

Ta operator se uporablja za sklicevanje na element, ki je prisoten na položaju, podanem znotraj operatorja.

map::clear()

Odstrani vse elemente z zemljevida.

map::at() in map::swap()

funkcija at() se uporablja za vrnitev sklica na element, povezan s ključem k. funkcija swap() se uporablja za izmenjavo vsebine dveh zemljevidov, vendar morata biti zemljevida iste vrste, čeprav se velikosti lahko razlikujejo.