Žemėlapis C++ standartinėje šablonų bibliotekoje (STL)
Žemėlapiai yra asociatyvūs konteineriai kurie saugo elementus pagal žemėlapio sudarymą. Kiekvienas elementas turi rakto reikšmę ir susietą vertę. Jokios dvi susietos reikšmės negali turėti tų pačių pagrindinių verčių.
std::map yra žemėlapių konteinerių klasės šablonas ir jis yra apibrėžtas antraštės faile.
Pagrindinės std::map narių funkcijos
Kai kurios pagrindinės funkcijos, susijusios su std::map:
- pradėti () – Grąžina iteratorių į pirmąjį elementą žemėlapyje.
- galas() – Grąžina iteratorių į teorinį elementą, kuris eina po paskutinio elemento žemėlapyje.
- dydis () – Grąžina elementų skaičių žemėlapyje.
- maksimalus_dydis() – Grąžina maksimalų elementų skaičių, kurį gali turėti žemėlapyje.
- tuščia() – Grąžina, ar žemėlapis tuščias.
- poros įterpimas (rakto reikšmė, žemėlapio reikšmė) – Prideda naują elementą į žemėlapį.
- ištrinti (iteratoriaus padėtis) – Pašalina elementą iteratoriaus nurodytoje vietoje.
- ištrinti (konst g) – Pašalina rakto reikšmę „g“ iš žemėlapio.
- aišku () – Pašalina visus elementus iš žemėlapio.
std::map pavyzdžiai
Toliau pateikti pavyzdžiai rodo, kaip atlikti pagrindines operacijas su žemėlapio konteineriais.
1 pavyzdys: pradžia() ir pabaiga() funkcija
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; // Įterpti kai kurias reikšmes į žemėlapį mp['one'] = 1; mp['du'] = 2; mp['trys'] = 3; // Gaukite iteratorių, nukreipiantį į pirmąjį elementą // map mapint>::iterator it = mp.begin(); // Pakartokite žemėlapį ir atspausdinkite elementus while (it != mp.end()) { cout < < 'Key: ' < < ', Value: ' ++it; } return 0; }> |
Išvestis
Key: one, Value: 1 Key: three, Value: 3 Key: two, Value: 2
Pirmiau nurodyto metodo sudėtingumas:
Laiko sudėtingumas: O(n) kur n yra žemėlapio dydis.
Pagalbinė erdvė: O(n)
2 pavyzdys: dydis() funkcija
C++
// C++ program to illustrate the size() function> #include> #include> #include> using> namespace> std;> int> main()> {> > // Create a map of strings to integers> > mapint>žemėlapis; // Įterpti kai kurias reikšmes į žemėlapio žemėlapį['one'] = 1; žemėlapis ['du'] = 2; žemėlapis ['trys'] = 3; // Spausdinkite žemėlapio dydžio dydį < < 'Size of map: ' < < map.size() < < endl; return 0; }> |
Išvestis
Size of map: 3
Pirmiau nurodyto metodo sudėtingumas:
Laiko sudėtingumas: O(1).
3 pavyzdys: Žemėlapio įgyvendinimas
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> >::iteratorius 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 |
Išvestis
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...
Pirmiau nurodyto metodo sudėtingumas:
Laiko sudėtingumas: O(n log(n)), nes n yra žemėlapio dydis
Pagalbinė erdvė: O(n)
4 pavyzdys: sveikųjų skaičių žemėlapio įgyvendinimas
C++
// C++ program to implement map container> #include> #include> #include> using> namespace> std;> int> main()> {> > // Create a map of strings to integers> > mapint>žemėlapis; // Įterpti kai kurias reikšmes į žemėlapio žemėlapį['one'] = 1; žemėlapis ['du'] = 2; žemėlapis ['trys'] = 3; // Spausdinkite reikšmes žemėlapyje 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) { cout < < 'Key 'four' is in the map' < < endl; } else { cout < < 'Key 'four' is not in the map' < < endl; } return 0; }> |
Išvestis
Key: one, Value: 1 Key: two, Value: 2 Key: three, Value: 3 Key 'four' is not in the map
Visų std::map funkcijų sąrašas
Šioje lentelėje yra visos funkcijos, apibrėžtos klasėje std::map.
| Funkcija | Apibrėžimas |
|---|---|
| žemėlapis::insert() | Įterpti elementus su tam tikru raktu į žemėlapio konteinerį –> O(log n) |
| žemėlapis:: count() | Grąžina elemento, kurio pagrindinė reikšmė yra „g“, atitikčių skaičių žemėlapyje. –> O(log n) |
| žemėlapis equal_range() | Pateikia porų iteratorių. Pora nurodo diapazono, apimančio visus konteinerio elementus, kurių raktas atitinka k, ribas. |
| žemėlapio trynimas () | Naudojamas elementams ištrinti iš konteinerio –> O(log n) |
| žemėlapis rend() | Grąžina atvirkštinį iteratorių, nukreipiantį į teorinį elementą prieš pat pirmąją rakto-reikšmių porą žemėlapyje (kuri laikoma atvirkštine pabaiga). |
| žemėlapis rbegin()
| Grąžina atvirkštinį iteratorių, kuris nurodo paskutinį žemėlapio elementą. |
| rasti žemėlapyje () | Grąžina iteratorių į elementą su rakto reikšme „g“ žemėlapyje, jei jis rastas, kitu atveju grąžina iteratorių į pabaigą. |
| žemėlapis crbegin() ir crend() | crbegin() grąžina nuolatinį atvirkštinį iteratorių, nurodydamas paskutinį elementą žemėlapio konteineryje. crend() grąžina pastovų atvirkštinį iteratorių, nukreipiantį į teorinį elementą prieš pirmąjį elementą žemėlapyje. |
| žemėlapis cbegin() ir cend() | cbegin() grąžina pastovų iteratorių, nurodantį pirmąjį žemėlapio konteinerio elementą. cend() grąžina pastovų iteratorių, nukreipiantį į teorinį elementą, einantį po paskutinio elemento daugialypės terpės schemoje. |
| žemėlapis emplace () | Į žemėlapio konteinerį įterpia raktą ir jo elementą. |
| žemėlapis max_size() | Grąžina maksimalų elementų skaičių, kurį gali talpinti žemėlapio konteineris –> O(1) |
| žemėlapio viršutinė_riba() | Grąžina iteratorių į pirmąjį elementą, kuris yra lygiavertis susietai vertei su rakto reikšme „g“ arba tikrai eis po elemento su rakto reikšme „g“ žemėlapyje |
| žemėlapio operatorius= | Priskiria konteinerio turinį kitam konteineriui, pakeičiant dabartinį turinį. |
| žemėlapio apatinė riba () | Grąžina iteratorių į pirmąjį elementą, kuris yra lygiavertis susietai vertei su rakto reikšme „g“ arba tikrai nebus prieš elementą su rakto reikšme „g“ žemėlapyje –> O(log n) |
| žemėlapis emplace_hint() | Į žemėlapio konteinerį įterpia raktą ir jo elementą su duota užuomina. |
| žemėlapio vertės_komp.() | Grąžina objektą, kuris nustato elementų išdėstymą žemėlapyje (pagal numatytuosius nustatymus „ <“). |
| žemėlapio raktas_comp() | Grąžina objektą, kuris nustato elementų išdėstymą žemėlapyje (pagal numatytuosius nustatymus „ <“). |
| žemėlapis::dydis() | Grąžina elementų skaičių žemėlapyje. |
| žemėlapis::tuščias() | Grąžina, ar žemėlapis tuščias |
| žemėlapis::begin() and end() | begin() grąžina iteratorių į pirmąjį elementą žemėlapyje. end() grąžina iteratorių teoriniam elementui, kuris seka po paskutinio elemento žemėlapyje |
| žemėlapis::operatorius[] | Šis operatorius naudojamas nurodyti elementą, esantį operatoriaus viduje nurodytoje vietoje. |
| žemėlapis::clear() | Pašalina visus elementus iš žemėlapio. |
| žemėlapis::at() ir žemėlapis::swap() | Funkcija at() naudojama norint grąžinti nuorodą į elementą, susietą su raktu k. Funkcija swap() naudojama keistis dviejų žemėlapių turiniu, tačiau žemėlapiai turi būti to paties tipo, nors dydžiai gali skirtis. |