Mi az std :: map?
A C ++ nyelven a MAP egy asszociatív tároló, amely elemeket tárol formában. A térkép minden eleme kulcsértékből és leképezett értékből áll. Két leképezett érték nem oszthatja meg ugyanazokat a kulcsértékeket.
A kulcsértékek alkalmasak az elemek egyedi rendezésére és azonosítására. A leképezett értékek a kulccsal társított tartalom tárolására szolgálnak. A kettő típusonként különbözhet, de a tagtípus kombinálja őket egy pártípuson keresztül, amely mindkettőt egyesíti.
Ebben a C ++ oktatóanyagban megtudhatja:
- Mi az std :: map?
- Miért használja az std :: map-ot?
- Szintaxis:
- Tagok típusai:
- Beépített funkciók
- A térképi elemek fölött ismétlődik
- Adatok beszúrása a std :: map-ba:
- Keresés egy térképen
- Adatok törlése egy térképről
Miért használja az std :: map-ot?
Íme a térkép használatának okai:
- Az std :: map egyedi kulcsokat csak a kiválasztott rendezési kritériumok alapján rendezett sorrendben tárolja.
- Könnyű és gyorsabb elemeket keresni a kulcs segítségével.
- Minden kulcshoz csak egy elem van csatolva.
- Az std :: map asszociatív tömbként használható.
- Az std :: map bináris fák segítségével valósítható meg (kiegyensúlyozott).
Szintaxis:
Az std :: map deklarálásához használja ezt a szintaxist:
std::mapmap_name;
- A key_datatype a térképkulcsok adattípusát jelöli.
- Az value_datatype a térképkulcsoknak megfelelő értékek adattípusát jelöli.
- A map_name a térkép neve.
Például:
mapmy_map;
Kijelentettük a my_map nevű térképet. A térkép egy karakterláncot fog tartalmazni a kulcsadattípusokként , az egész pedig az értékek adattípusát.
Tagok típusai:
A tag függvények a következő tagtípusokat használhatják paraméterként vagy visszatérési típusként:
- key_type: Key (A sablon első paramétere)
- mapped_type: T (A sablon második paramétere)
- key_compare: Összehasonlítás (A sablon harmadik paramétere)
- allokátor_típus: Alloc (A sablon negyedik paramétere)
- érték_típus: pár
- value_compare: Beágyazott függvényosztály az elemek összehasonlításához
- referencia: allokátor_típus :: referencia
- const_reference: allokátor_típus :: const_reference
- pointer: allokátor_típus :: pointer
- const_pointer: allokátor_típus :: const_pointer
- iterátor: kétirányú iterátor az érték_típushoz
- const_iterator: kétirányú iterátor az const value_type értékhez
- fordított_iterátor : fordított iterátor
- const_reverse_iterator: állandó fordított iterátor
- különbségtípus: ptrdiff_t
- size_type: size_t
Beépített funkciók
Az std :: map beépített funkciókkal rendelkezik. Ezek egy része a következőket tartalmazza:
- begin () - Ez a függvény visszatér az iterátorhoz a térkép első eleméhez.
- size () - Ez a függvény visszaadja a térképen szereplő elemek számát.
- empty () - Ez a függvény logikai értéket ad vissza, jelezve, hogy egy térkép üres-e.
- insert (pár (kulcs, érték)) - Ez a függvény új kulcs-érték párost illeszt be egy térképbe.
- find (val) - Ez a függvény megadja az iterátort a val elemnek, ha megtalálható. Ellenkező esetben az m.end () értéket adja vissza.
- Törlés (iterátor pozíció) - Ez a funkció törli az iterátor által mutatott pozíciót.
- törlés (const g) - Ez a függvény törli a g kulcsértéket a térképről.
- Törlés () - Ez a funkció töröl minden elemet a térképről.
A térképi elemek fölött ismétlődik
Iterálhat a térkép elemein. Egyszerűen létre kell hoznunk egy iterátort, és ezt kell használnunk. Például:
1. példa:
#include#include #include
Kimenet:
Itt van egy képernyőkép a kódról:
Kód Magyarázat:
- A funkcióinak használatához vegye fel az iostream fejlécfájlt a kódunkba.
- A függvények használatához vegye fel a string fejlécfájlt a kódunkba.
- Felvegye a térkép fejlécfájlját a kódunkba annak funkcióinak használatához.
- Vegye fel az std névteret a kódunkba, hogy az osztályait hívás nélkül használhassa.
- Hívja meg a main () függvényt. A {a függvény törzsének kezdetét jelöli.
- Hozzon létre egy Student nevű térképet, ahol a kulcsok egész számok lesznek, és az értékek karakterláncok lesznek.
- Helyezzen be értékeket a térképbe. Egy 200-as kulcs és egy Alice-érték kerül a térképbe.
- Helyezzen be értékeket a térképbe. A térképbe beilleszt egy 201-es kulcsot és egy John-értéket.
- Használja a size () függvényt a Student nevű térkép méretének megszerzéséhez. Ennek vissza kell adnia egy 2-t.
- Nyomtasson ki egy kis szöveget a konzolra.
- Használjon egy for for ciklust egy iterátor létrehozására, amely a Térkép Diákok nevű elemei fölé kerül.
- Nyomtassa ki a konzolon a térkép diákok értékeit.
- A for hurok testének vége.
- A fő () függvény törzsének vége.
Adatok beszúrása az std :: térképbe
Az elemeket beírhatja az std :: mapba az insert () függvény használatával. Ne feledje, hogy az std :: map kulcsoknak egyedinek kell lenniük.
Tehát először ellenőrzi, hogy minden kulcs megtalálható-e a térképen. Ha jelen van, a bejegyzés nem kerül beillesztésre, de visszaadja a meglévő bejegyzés ismétlőjét. Ha nincs, a bejegyzés beillesztésre kerül.
A függvény a következő variációkkal rendelkezik:
- insert (pair) - ezzel a variációval kulcs-érték pár kerül a térképbe.
- insert (start_itr, end_itr) - ezzel a variációval a bejegyzések egy másik térképről a start_itr és end_itr által meghatározott tartományba kerülnek.
Az insert_or_assing () függvény ugyanúgy működik, mint az insert () függvény, de ha az adott kulcs már létezik a térképen, akkor annak értéke módosul.
2. példa:
#include
Kimenet:
Itt van egy képernyőkép a kódról:
Kód Magyarázat:
- Felvegye a térkép fejlécfájlját a kódunkba annak funkcióinak használatához.
- A funkcióinak használatához vegye fel az iostream fejlécfájlt a kódunkba.
- Vegye fel az std névteret a kódunkba, hogy az osztályait hívás nélkül használhassa.
- Hívja meg a main () függvényt. A {a függvény törzsének kezdetét jelöli.
- Hozzon létre egy m nevű térképet, ahol a kulcsok egész számok lesznek, az értékek pedig egész számok lesznek. Három bejegyzés készült a térképre.
- Helyezzen be egy új bejegyzést a m térképbe. Egy 5-ös és egy 6-os kulcs kerül beillesztésre a térképbe.
- Megpróbál bejegyzést tenni egy már létező kulcsba. Mivel az 1 kulcs már létezik a térképen, a bejegyzés nem kerül végrehajtásra.
- Az insert_or_assign () függvény használatával meglévő bejegyzés beszúrásához vagy módosításához. Mivel az 1 kulcs már létezik, az értéke 6-ra változik.
- Nyomtasson ki egy kis szöveget a konzolra. A "\ t" karakter vízszintes teret hoz létre, míg a "\ n" karakter az egér kurzort a következő sorra mozgatja.
- Használjon egy for for ciklust az itr nevű iterátor létrehozásához, amely az m nevű térkép elemeinek iterációjára szolgál.
- Nyomtassa ki az m térkép értékeit a konzolra. A "\ t" karakter vízszintes teret hoz létre az egyes kulcsok és a hozzájuk tartozó értékek között. Ezzel szemben a "\ n" karakter minden iteráció után az egér kurzort a következő sorra mozgatja.
- A hurok testének vége.
- A programnak a sikeres befejezés után vissza kell térnie az értékre.
- A fő () függvény törzsének vége.
Keresés egy térképen
A find () függvényt használhatjuk a térkép elemeinek keresésére a kulcsukkal. Ha a kulcs nem található, a függvény visszaadja az std :: map :: end parancsot. Ellenkező esetben a keresett elem ismétlője visszatér.
2. példa:
#include#include #include
Kimenet:
Itt van egy képernyőkép a kódról:
Kód Magyarázat:
- Vegye fel az iostream fejlécfájlt a kódunkba, hogy hibajavítás nélkül használhassa a funkcióit.
- Vegye fel a string fejlécfájlt a kódunkba, hogy hibajavítás nélkül használhassa a funkcióit.
- Vegye fel a térkép fejlécfájlját kódunkba, hogy hibajavítás nélkül használhassa a funkcióit.
- Vegye fel az std névteret a kódunkba, hogy az osztályait hívás nélkül használhassa.
- Hívja meg a main () függvényt. A {a main () függvény törzsének kezdetét jelöli.
- Hozzon létre egy diák nevű térképet, amelynek kulcsai egész számok és értékek lesznek.
- Helyezzen be értékeket a térképbe. Egy 200-as kulcs és egy Alice-érték kerül a térképbe.
- Helyezzen be értékeket a térképbe. A térképbe beilleszt egy 201-es kulcsot és egy John-értéket.
- Keresse meg a 201-es kulccsal társított értéket.
- Használjon egy if utasítást annak ellenőrzéséhez, hogy a kulcs értéke megtalálható-e.
- Nyomtassa ki a kulcs értékét a konzolon lévő szöveg mellé.
- Az if utasítás törzsének vége.
- A fő () függvény törzsének vége.
Adatok törlése egy térképről
Az erase () függvény segítségével törölhetünk egy értéket a térképről. Egyszerűen létrehozunk egy iterátort, amely a törlendő elemre mutat. Ezután az iterátor átkerül az erase () függvényre.
3. példa:
#include#include #include
Kimenet:
Itt van egy képernyőkép a kódról:
Kód Magyarázat:
- A funkcióinak használatához vegye fel az iostream fejlécfájlt a kódunkba.
- A függvények használatához vegye fel a string fejlécfájlt a kódunkba.
- Felvegye a térkép fejlécfájlját a kódunkba annak funkcióinak használatához.
- Vegye fel az std névteret a kódunkba, hogy az osztályait hívás nélkül használhassa.
- Hívja meg a main () függvényt. A {a fő () függvény törzsének kezdetét jelöli.
- Hozzon létre egy my_map nevű térképet, amelynek kulcsai karakterláncok és egész számok lesznek.
- Helyezzen be értékeket a my_map térképbe. A tehén kulcsát és az 1 értékét beillesztjük a térképbe.
- Helyezzen be értékeket a my_map térképbe. A Cat kulcsát és 2-es értékét beillesztjük a térképbe.
- Adjon hozzá egy 3 értéket a my_map térképhez egy oroszlán kulcsával.
- Hozzon létre egy iterátort a my_map térképen történő ismétléshez, és a kulcs macskát keresi.
- Törölje az iterátor által mutatott elemet.
- Az iterátor segítségével iterálhat a my_map térkép elemein az elejétől a végéig.
- Nyomtassa ki a konzolon a my_map térkép tartalmát.
- A programnak a sikeres befejezés után vissza kell adnia a kimenetet.
- A fő () függvény törzsének vége.
Összegzés:
- A térkép egy asszociatív tároló, amely leképezett formában tárolja az elemeket.
- A térkép minden elemének van kulcsértéke és leképezett értéke.
- Egy térképen két leképezett érték nem oszthatja meg a kulcsértékeket.
- A kulcsértékek segítenek az elemek egyedi rendezésében és azonosításában.
- A leképezett értékek segítenek a kulccsal társított tartalom tárolásában.
- A C ++ térkép egyedi kulcsokat rendezett sorrendben tárol.
- A C ++ térképpel való együttműködéshez létrehozunk egy iterátort az elemek feletti iterációhoz.
- Az iterátor segítségével olyan feladatokat hajthatunk végre, mint az elemek keresése és törlése a térképről.