Mikä on std :: map?
C ++: ssa MAP on assosiatiivinen säilö, joka tallentaa kohteita kartoitetussa muodossa. Jokainen kartan kohde koostuu avainarvosta ja yhdistetystä arvosta. Kaksi yhdistettyä arvoa ei voi jakaa samoja avainarvoja.
Tärkeimmät arvot ovat hyviä elementtien lajittelemiseksi ja tunnistamiseksi yksilöllisesti. Yhdistetyt arvot on tarkoitettu avaimeen liittyvän sisällön tallentamiseen. Nämä kaksi voivat olla tyypiltään erilaisia, mutta jäsentyyppi yhdistää ne parityypin kautta, joka yhdistää molemmat.
Tässä C ++ -opetusohjelmassa opit:
- Mikä on std :: map?
- Miksi käyttää standardia :: map?
- Syntaksi:
- Jäsentyypit:
- Sisäänrakennetut toiminnot
- Kartuttaminen kartan elementtien yli
- Lisätään tietoja standardiin :: map:
- Etsiminen kartalta
- Tietojen poistaminen kartalta
Miksi käyttää standardia :: map?
Tässä on syitä kartan käyttöön:
- std :: map tallentaa yksilölliset avaimet vain järjestyksessä valittujen lajitteluperusteiden mukaan.
- Elementtien etsiminen avaimella on helppoa ja nopeaa.
- Vain yksi elementti on liitetty kuhunkin avaimeen.
- std :: mapia voidaan käyttää assosiatiivisena taulukona.
- std :: map on toteutettavissa binääripuilla (tasapainotettu).
Syntaksi:
Voit ilmoittaa standardin :: map käyttämällä tätä syntaksia:
std::mapmap_name;
- Key_datatype tarkoittaa kartta-avainten tietotyyppiä.
- Value_datatype tarkoittaa karttanäppäimiä vastaavien arvojen tietotyyppiä.
- Map_name on kartan nimi.
Esimerkiksi:
mapmy_map;
Julistimme kartan nimeltä my_map. Kartan on merkkijonon avain tietotyypit ja kokonaisluvun arvojen datatyyppi.
Jäsentyypit:
Jäsentoiminnot voivat käyttää seuraavia jäsentyyppejä joko parametreina tai palautustyyppeinä:
- key_type: Key (mallin ensimmäinen parametri)
- mapped_type: T (mallin toinen parametri)
- key_compare: Vertaa (mallin kolmas parametri)
- allokaattorin tyyppi: Alloc (mallin neljäs parametri)
- value_type: pari
- value_compare: Sisäkkäinen funktioluokka elementtien vertailua varten
- viite: allokaattorin tyyppi :: viite
- const_reference: varaimen_tyyppi :: const_reference
- osoitin: allokaattorin tyyppi :: osoitin
- const_pointer: allokaattorin tyyppi :: const_pointer
- iteraattori: kaksisuuntainen iteraattori arvoon_tyyppi
- const_iterator: kaksisuuntainen iteraattori const arvo_tyyppiin
- reverse_iterator: käänteinen iteraattori
- const_reverse_iterator: jatkuva käänteinen iteraattori
- ero_tyyppi : ptrdiff_t
- size_type: int
Sisäänrakennetut toiminnot
std :: map sisältää sisäänrakennetut toiminnot. Jotkut näistä ovat:
- begin () - Tämä toiminto palauttaa iteraattorin kartan ensimmäiseen kohtaan.
- size () - Tämä toiminto palauttaa kohteiden määrän kartalla.
- tyhjä () - Tämä toiminto palauttaa loogisen arvon, joka osoittaa, onko kartta tyhjä.
- insert (pari (avain, arvo)) - Tämä toiminto lisää uuden avain-arvo-parin karttaan.
- find (val) - Tämä toiminto antaa iteraattorin val-elementille, jos se löytyy. Muussa tapauksessa se palauttaa m.end ().
- Pyyhi (iteraattorin sijainti) - Tämä toiminto poistaa kohteen iteraattorin osoittamasta kohdasta.
- pyyhi (const g) - Tämä toiminto poistaa avainarvon g kartalta.
- Tyhjennä () - Tämä toiminto poistaa kaikki kohteet kartalta.
Kartuttaminen kartan elementtien yli
Voit toistaa kartan elementtejä. Meidän on yksinkertaisesti luotava iteraattori ja käytettävä sitä tähän. Esimerkiksi:
Esimerkki 1:
#include#include #include
Tuotos:
Tässä on kuvakaappaus koodista:
Koodin selitys:
- Sisällytä iostream-otsikkotiedosto koodiimme käyttääksesi sen toimintoja.
- Sisällytä merkkijonotunnistetiedosto koodiin käyttääksesi sen toimintoja.
- Sisällytä kartan otsikkotiedosto koodiin käyttääksesi sen toimintoja.
- Sisällytä vakio nimitila koodissamme käyttääksesi luokkia sitä kutsumatta.
- Kutsu main () -toiminto. {Merkitsee funktion rungon alkua.
- Luo kartta nimeltä Opiskelijat, jossa avaimet ovat kokonaislukuja, ja arvot ovat merkkijonoja.
- Lisää arvot opiskelijoiden karttaan. Avaimen arvo 200 ja arvo Alice lisätään karttaan.
- Lisää arvot opiskelijoiden karttaan. Avaimen arvo 201 ja Johnin arvo lisätään karttaan.
- Käytä size () -toimintoa saadaksesi opiskelijoiden nimisen kartan koko. Tämän pitäisi palauttaa 2.
- Tulosta tekstiä konsolille.
- Luo it-iteraattori for for -silmukalla iteroimaan kartan elementit nimeltä Opiskelijat.
- Tulosta karttaopiskelijoiden arvot konsolille.
- For-silmukan rungon pää.
- Pääfunktion () rungon pää.
Lisätään tietoja standardiin :: kartta
Voit syöttää kohteita std :: mapiin lisäystoiminnon avulla. Muista, että std :: map -avainten on oltava yksilöllisiä.
Joten se tarkistaa ensin, onko kukin avain läsnä kartalla. Jos se on läsnä, merkintää ei lisätä, mutta se palauttaa olemassa olevan merkinnän iteraattorin. Jos sitä ei ole, merkintä lisätään.
Toiminnolla on seuraavat muunnelmat:
- insert (pair) - tällä muunnelmalla avain-arvo-pari lisätään karttaan.
- insert (start_itr, end_itr) - tällä muunnelmalla merkinnät lisätään alueelle, jonka start_itr ja end_itr määrittelevät toisesta kartasta.
Insert_or_assing () toiminto toimii samalla tavalla kuin insertti () funktio, mutta jos tietty avain on jo olemassa kartalla, sen arvo muutetaan.
Esimerkki 2:
#include
Tuotos:
Tässä on kuvakaappaus koodista:
Koodin selitys:
- Sisällytä kartan otsikkotiedosto koodiin käyttääksesi sen toimintoja.
- Sisällytä iostream-otsikkotiedosto koodiimme käyttääksesi sen toimintoja.
- Sisällytä vakio nimitila koodissamme käyttääksesi luokkia sitä kutsumatta.
- Kutsu main () -toiminto. {Merkitsee funktion rungon alkua.
- Luo kartta nimeltä m, jossa avaimet ovat kokonaislukuja, ja arvot ovat kokonaislukuja. Kartalle on tehty kolme merkintää.
- Lisää uusi merkintä karttaan m. Avaimen arvo 5 ja arvo 6 lisätään karttaan.
- Yritetään tehdä merkintä jo olemassa olevaan avaimeen. Koska avain 1 on jo kartalla, merkintää ei tehdä.
- Lisää tai muokkaa olemassa olevaa merkintää lisäys- tai_määritys () -toiminnon avulla. Koska avain 1 on jo olemassa, sen arvo muutetaan arvoksi 6.
- Tulosta tekstiä konsolille. "\ T" -merkki luo vaakasuoran tilan, kun taas "\ n" -merkki siirtää hiiren kohdistimen seuraavalle riville.
- Käytä for for -silmukkaa iter-nimisen iteraattorin luomiseen iteroimaan kartan m elementtien yli.
- Tulosta kartan m arvot konsolille. "\ T" -merkki luo vaakasuoran tilan jokaisen näppäimen ja sitä vastaavan arvon väliin. Sitä vastoin "\ n" -merkki siirtää hiiren kohdistimen seuraavalle riville jokaisen iteraation jälkeen.
- Silmukan rungon pää.
- Ohjelman on palautettava arvo, kun se on suoritettu onnistuneesti.
- Pääfunktion () rungon pää.
Etsiminen kartalta
Voimme käyttää find () -toimintoa etsimään elementtejä kartalta niiden näppäimillä. Jos avainta ei löydy, funktio palauttaa std :: map :: end. Muussa tapauksessa haetun elementin iteraattori palautetaan.
Esimerkki 2:
#include#include #include
Tuotos:
Tässä on kuvakaappaus koodista:
Koodin selitys:
- Sisällytä iostream-otsikkotiedosto koodiimme käyttääksesi sen toimintoja virheettömästi.
- Sisällytä merkkijonotunnistetiedosto koodiimme käyttääksesi sen toimintoja virheettömästi.
- Sisällytä kartan otsikkotiedosto koodiimme käyttääksesi sen toimintoja virheettömästi.
- Sisällytä vakio nimitila koodissamme käyttääksesi luokkia sitä kutsumatta.
- Kutsu main () -toiminto. {Tarkoittaa pääfunktion () rungon alkua.
- Luo kartta nimeltä Opiskelijat, joiden avaimet ovat kokonaislukuja ja arvojonoja.
- Lisää arvot opiskelijoiden karttaan. Avaimen arvo 200 ja arvo Alice lisätään karttaan.
- Lisää arvot opiskelijoiden karttaan. Avaimen arvo 201 ja Johnin arvo lisätään karttaan.
- Etsi avainarvoon 201 liittyvä arvo.
- Käytä if-käskyä tarkistaaksesi, onko avaimen arvo löydetty.
- Tulosta avaimen arvo konsolin tekstin viereen.
- If-lauseen rungon loppu.
- Pääfunktion () rungon pää.
Tietojen poistaminen kartalta
Voimme käyttää erase () -toimintoa arvon poistamiseksi kartalta. Luomme yksinkertaisesti iteraattorin, joka osoittaa poistettavaan elementtiin. Sitten iteraattori siirretään erase () -toimintoon.
Esimerkki 3:
#include#include #include
Tuotos:
Tässä on kuvakaappaus koodista:
Koodin selitys:
- Sisällytä iostream-otsikkotiedosto koodiimme käyttääksesi sen toimintoja.
- Sisällytä merkkijonotunnistetiedosto koodiin käyttääksesi sen toimintoja.
- Sisällytä kartan otsikkotiedosto koodiin käyttääksesi sen toimintoja.
- Sisällytä vakio nimitila koodissamme käyttääksesi luokkia sitä kutsumatta.
- Kutsu main () -toiminto. {Tarkoittaa pääfunktion () rungon alkua.
- Luo kartta nimeltä my_map, jonka avaimet ovat merkkijonoja ja arvoja kokonaislukuja.
- Lisää arvot karttaan my_map. Lehmän avain ja arvo 1 lisätään karttaan.
- Lisää arvot karttaan my_map. Cat-avain ja arvo 2 lisätään karttaan.
- Lisää arvo 3 kartalle my_map leijonan avaimella.
- Luo iteraattori iteroimaan kartan my_map yli etsimällä avainkissaa.
- Poista iteraattorin osoittama elementti.
- Käytä iteraattoria toistaaksesi kartan my_map elementit alusta loppuun.
- Tulosta kartan my_map sisältö konsolista.
- Ohjelman on palautettava tulos onnistuneesti suoritettuaan.
- Pääfunktion () rungon pää.
Yhteenveto:
- Kartta on assosiatiivinen säilö, joka tallentaa kohteet kartoitetussa muodossa.
- Jokaisella kartan kohdalla on avainarvo ja yhdistetty arvo.
- Kartalla kaksi yhdistettyä arvoa ei voi jakaa avainarvoja.
- Tärkeimmät arvot auttavat elementtien lajittelussa ja tunnistamisessa yksilöllisesti.
- Kartoitetut arvot auttavat avaimeen liittyvän sisällön tallentamisessa.
- C ++ -kartta tallentaa yksilölliset avaimet järjestyksessä.
- Toimiakseen C ++ -kartan kanssa luomme iteraattorin iteroimaan elementtien yli.
- Iteraattorilla voimme suorittaa tehtäviä, kuten kohteiden etsimisen ja poistamisen kartalta.