Žemėlapiai yra C++ STL (standartinės šablonų bibliotekos) dalis. Žemėlapiai yra asociatyvūs konteineriai, kuriuose saugoma surūšiuota rakto-reikšmių pora, kurioje kiekvienas raktas yra unikalus ir gali būti įterptas arba ištrintas, bet negali būti pakeistas. Su raktais susietos reikšmės gali būti keičiamos.
Pavyzdžiui: Darbuotojų žemėlapis, kuriame darbuotojo ID yra raktas, o vardas yra reikšmė, gali būti pateiktas kaip:
c
| Raktai | Vertybės |
|---|---|
| 101 | Nikita |
| 102 | Robinas |
| 103 | Giliai |
| 104 | Jonas |
Sintaksė
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>
Parametras
Raktas: Pagrindinis duomenų tipas, kuris turi būti saugomas žemėlapyje.
tipas: Vertės duomenų tipas, kuris turi būti saugomas žemėlapyje.
palyginti: Palyginimo klasė, kuri paima du to paties tipo bool argumentus ir grąžina reikšmę. Šis argumentas yra neprivalomas, o dvejetainis predikatas less yra numatytoji reikšmė.
paskirstyti: Skirstytuvo objekto tipas. Šis argumentas yra neprivalomas, o numatytoji reikšmė yra skirstytuvas .
Žemėlapio kūrimas
Žemėlapius galima lengvai sukurti naudojant šį teiginį:
typedef pair value_type;
Aukščiau pateikta forma bus naudojama žemėlapiui su tipo raktu sukurti Rakto tipas ir tipo vertę vertės tipas. Svarbu tai, kad žemėlapio raktas ir atitinkamos reikšmės visada įterpiamos kaip pora, į žemėlapį negalima įterpti tik rakto ar tik reikšmės.
1 pavyzdys
#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; } } Išvestis:
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
Narių funkcijos
Žemiau pateikiamas visų žemėlapio narių funkcijų sąrašas:
išsaugoti youtube video vlc
Statytojas/griovėjas
| Funkcijos | apibūdinimas |
|---|---|
| konstruktoriai | Sukurti žemėlapį |
| naikintojai | Žemėlapio naikintojas |
| operatorius = | Nukopijuokite žemėlapio elementus į kitą žemėlapį. |
Iteratoriai
| Funkcijos | apibūdinimas |
|---|---|
| pradėti | Grąžina iteratorių, nukreipiantį į pirmąjį elementą žemėlapyje. |
| cbegin | Grąžina const iteratorių, nukreipiantį į pirmąjį elementą žemėlapyje. |
| galas | Grąžina iteratorių, nurodantį į praeitį. |
| keletas | Grąžina pastovų iteratorių, nurodantį į praeitį. |
| rbegin | Grąžina atvirkštinį iteratorių, nukreipiantį į pabaigą. |
| gamina | Grąžina atvirkštinį iteratorių, nurodantį į pradžią. |
| crbegin | Grąžina nuolatinį atvirkštinį iteratorių, nurodantį į pabaigą. |
| tikėti | Grąžina nuolatinį atvirkštinį iteratorių, nurodantį į pradžią. |
Talpa
| Funkcijos | apibūdinimas |
|---|---|
| tuščia | Grąžina tiesa, jei žemėlapis tuščias. |
| dydis | Grąžina elementų skaičių žemėlapyje. |
| maksimalus_dydis | Grąžina maksimalų žemėlapio dydį. |
Elemento prieiga
| Funkcijos | apibūdinimas |
|---|---|
| operatorius[] | Gauti elementą duotu raktu. |
| adresu | Gauti elementą duotu raktu. |
Modifikatoriai
| Funkcijos | apibūdinimas |
|---|---|
| Įdėti | Įterpti elementą į žemėlapį. |
| ištrinti | Ištrinkite elementus iš žemėlapio. |
| apsikeisti | Keiskitės žemėlapio turiniu. |
| aišku | Ištrinkite visus žemėlapio elementus. |
| vieta | Sukurkite ir įterpkite naujus elementus į žemėlapį. |
| emplace_hint | Sukurkite ir įterpkite naujų elementų į žemėlapį pagal užuominą. |
Stebėtojai
| Funkcijos | apibūdinimas |
|---|---|
| key_comp | Grąžinkite raktų palyginimo objekto kopiją. |
| vertės_komp | Grąžinkite verčių palyginimo objekto kopiją. |
Operacijos
| Funkcijos | apibūdinimas |
|---|---|
| rasti | Ieškokite elemento naudodami nurodytą raktą. |
| skaičiuoti | Gauna elementų, atitinkančių nurodytą raktą, skaičių. |
| apatinė riba | Grąžina iteratorių į apatinę ribą. |
| viršutinė_riba | Grąžina iteratorių į viršutinę ribą. |
| lygus_diapazonas | Grąžina elementų diapazoną, atitinkantį nurodytą raktą. |
Alokatorius
| Funkcijos | apibūdinimas |
|---|---|
| get_allocator | Grąžina skirstytuvo objektą, kuris naudojamas žemėlapiui sudaryti. |
Ne narių perkrautos funkcijos
| Funkcijos | apibūdinimas |
|---|---|
| operatorius== | Patikrina, ar abu žemėlapiai yra vienodi, ar ne. |
| operatorius!= | Patikrina, ar abu žemėlapiai yra vienodi, ar ne. |
| operatorius< | Patikrina, ar pirmasis žemėlapis yra mažesnis nei kitas, ar ne. |
| operatorius<=< td> | Patikrina, ar pirmasis žemėlapis yra mažesnis arba lygus kitam, ar ne. | =<>
| operatorius> | Patikrina, ar pirmasis žemėlapis yra didesnis už kitą, ar ne. |
| operatorius>= | Patikrina, ar pirmasis žemėlapis yra didesnis nei lygus kitam, ar ne. |
| apsikeisti () | Keičiasi dviejų žemėlapių elementu. |