Hva er STD :: map?
I C ++ er en MAP en assosiativ beholder som lagrer elementer i kartlagt form. Hvert element på kartet består av nøkkelverdi og en kartlagt verdi. To tilordnede verdier kan ikke dele de samme nøkkelverdiene.
Nøkkelverdiene er gode for å sortere og identifisere elementer unikt. De tilordnede verdiene er for lagring av innhold tilknyttet nøkkelen. De to kan variere i typer, men medlemstypen kombinerer dem via en par-type som kombinerer begge.
I denne C ++ opplæringen vil du lære:
- Hva er STD :: map?
- Hvorfor bruke std :: map?
- Syntaks:
- Medlemstyper:
- Innebygde funksjoner
- Iterere over kartelementer
- Sette inn data i std :: kart:
- Søker på et kart
- Slette data fra et kart
Hvorfor bruke std :: map?
Her er grunner til å bruke kart:
- std :: map lagrer unike nøkler bare i sortert rekkefølge basert på valgte sorteringskriterier.
- Det er enkelt og raskere å søke etter elementer ved hjelp av nøkkelen.
- Bare ett element er festet til hver nøkkel.
- std :: map kan brukes som en assosiativ matrise.
- std :: map kan implementeres ved hjelp av binære trær (balansert).
Syntaks:
For å erklære std :: map, bruk denne syntaksen:
std::mapmap_name;
- Key_datatype betegner datatypen til kartnøklene.
- Value_datatype betegner datatypen til verdiene som tilsvarer kartnøklene.
- Kartnavnet er navnet på kartet.
For eksempel:
mapmy_map;
Vi erklærte et kart som heter my_map. Kartet vil ha en streng som nøkkeldatatyper og heltall som verdier datatype.
Medlemstyper:
Medlemsfunksjonene kan bruke følgende medlemmstyper som parametere eller returtype:
- key_type: Key (Den første parameteren i malen)
- mapped_type: T (Den andre parameteren i malen)
- key_compare: Compare (Den tredje parameteren i malen)
- allocator_type: Alloc (Den fjerde parameteren i malen)
- value_type: pair
- value_compare: Nestet funksjonsklasse for å sammenligne elementer
- referanse: allocator_type :: referanse
- const_reference: allocator_type :: const_reference
- peker: allocator_type :: peker
- const_pointer: allocator_type :: const_pointer
- iterator: en toveis iterator til verdien_type
- const_iterator: en toveis iterator til const value_type
- reverse_iterator: en revers iterator
- const_reverse_iterator: en konstant revers iterator
- forskjellstype: ptrdiff_t
- size_type: size_t
Innebygde funksjoner
std :: map leveres med innebygde funksjoner. Noen av disse inkluderer:
- begin () - Denne funksjonen returnerer iteratoren til det første elementet på kartet.
- størrelse () - Denne funksjonen returnerer antall elementer på et kart.
- tom () - Denne funksjonen returnerer en boolsk verdi som angir om et kart er tomt.
- sett inn (par (nøkkel, verdi)) - Denne funksjonen setter inn et nytt nøkkelverdipar på et kart.
- find (val) - Denne funksjonen gir iteratoren til val-elementet hvis den blir funnet. Ellers vil den returnere m.end ().
- Erase (iteratorposisjon) - Denne funksjonen sletter elementet i posisjonen som iteratoren peker på.
- slett (const g) - Denne funksjonen sletter nøkkelverdien g fra et kart.
- Clear () - Denne funksjonen sletter alle elementene fra et kart.
Iterere over kartelementer
Du kan gjenta over kartelementene. Vi trenger bare å lage en iterator og bruke den til dette. For eksempel:
Eksempel 1:
#include#include #include
Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkluder iostream header-filen i koden vår for å bruke funksjonene.
- Inkluder strengtekstfilen i koden vår for å bruke funksjonene.
- Ta med kartoverskriftsfilen i koden vår for å bruke funksjonene.
- Inkluder std navneområdet i koden vår for å bruke klassene uten å kalle det.
- Ring til hovedfunksjonen (). {Markerer begynnelsen på kroppens funksjon.
- Lag et kart med navnet Students der tastene vil være heltall, og verdiene vil være strenger.
- Sett inn verdier i kartet Studenter. En nøkkel på 200 og en verdi av Alice vil bli satt inn i kartet.
- Sett inn verdier i kartet Studenter. En nøkkel på 201 og en verdi av John vil bli satt inn i kartet.
- Bruk størrelse () -funksjonen for å få størrelsen på kartet som heter Students. Dette skal returnere en 2.
- Skriv ut litt tekst på konsollen.
- Bruk en for-loop til å lage en iterator som heter den for å gjenta elementene på kartet som heter Students.
- Skriv ut verdiene til kartet Studenter på konsollen.
- Enden på kroppen til forløkken.
- Slutten av kroppen til hovedfunksjonen ().
Sette inn data i std :: kart
Du kan legge inn elementer i std :: map ved hjelp av funksjonen insert (). Husk at std :: kartnøklene må være unike.
Så det sjekker først om hver nøkkel er til stede på kartet. Hvis den er til stede, blir ikke oppføringen satt inn, men den returnerer iteratoren for den eksisterende oppføringen. Hvis den ikke er til stede, blir oppføringen satt inn.
Funksjonen har følgende varianter:
- sett inn (par) - med denne variasjonen settes et nøkkelverdipar inn i kartet.
- sett inn (start_itr, end_itr) - med denne variasjonen vil oppføringene settes inn i området definert av start_itr og end_itr fra et annet kart.
Funksjonen insert_or_assing () fungerer på samme måte som insert () -funksjonen, men hvis den gitte nøkkelen allerede finnes i kartet, vil verdien endres.
Eksempel 2:
#include
Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Ta med kartoverskriftsfilen i koden vår for å bruke funksjonene.
- Inkluder iostream header-filen i koden vår for å bruke funksjonene.
- Inkluder std navneområdet i koden vår for å bruke klassene uten å kalle det.
- Ring til hovedfunksjonen (). {Markerer begynnelsen på kroppens funksjon.
- Lag et kart med navnet m hvor nøklene vil være heltall, og verdiene vil være heltall. Tre oppføringer er gjort på kartet.
- Sett inn en ny oppføring på kartet m. En nøkkel på 5 og en verdi på 6 vil bli satt inn i kartet.
- Prøver å gjøre en oppføring i en allerede eksisterende nøkkel. Siden nøkkel 1 allerede finnes på kartet, vil ikke oppføringen bli gjort.
- Bruk insert_or_assign () -funksjonen til å sette inn eller endre en eksisterende oppføring. Siden nøkkelen 1 allerede eksisterer, vil verdien endres til 6.
- Skriv ut litt tekst på konsollen. Tegnet "\ t" skaper et horisontalt mellomrom mens "\ n" tegnet beveger musepekeren til neste linje.
- Bruk en for-løkke til å lage en iterator som heter itr for å gjenta over elementene på kartet som heter m.
- Skriv ut verdiene til kartet m på konsollen. Tegnet "\ t" skaper et horisontalt mellomrom mellom hver tast og dens tilsvarende verdi. I motsetning til dette flytter "\ n" -tegnet musepekeren til neste linje etter hver iterasjon.
- Slutten av kroppen til en løkke.
- Programmet må returnere verdi etter vellykket gjennomføring.
- Slutten av kroppen til hovedfunksjonen ().
Søker på et kart
Vi kan bruke finn () -funksjonen til å søke etter elementer på et kart ved hjelp av tastene. Hvis nøkkelen ikke blir funnet, returnerer funksjonen std :: map :: end. Ellers returneres en iterator av det søkte elementet.
Eksempel 2:
#include#include #include
Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkluder iostream header-filen i koden vår for å bruke funksjonene uten å få feil.
- Ta med strengtekstfilen i koden vår for å bruke funksjonene uten å få feil.
- Inkluder kartoverskriftsfilen i koden vår for å bruke funksjonene uten å få feil.
- Inkluder std navneområdet i koden vår for å bruke klassene uten å kalle det.
- Ring til hovedfunksjonen (). {Markerer begynnelsen på kroppen til hovedfunksjonen ().
- Lag et kart som heter Studenter hvis nøkler vil være heltall og verdistrenger.
- Sett inn verdier i kartet Studenter. En nøkkel på 200 og en verdi av Alice vil bli satt inn i kartet.
- Sett inn verdier i kartet Studenter. En nøkkel på 201 og en verdi av John vil bli satt inn i kartet.
- Se etter verdien assosiert med en nøkkel på 201.
- Bruk en if-setning for å sjekke om verdien for nøkkelen er funnet.
- Skriv ut verdien på nøkkelen sammen med litt tekst på konsollen.
- Slutten av kroppen til if-setningen.
- Slutten av kroppen til hovedfunksjonen ().
Slette data fra et kart
Vi kan bruke slett () -funksjonen til å slette en verdi fra et kart. Vi oppretter ganske enkelt en iterator som peker på elementet som skal slettes. Iteratoren blir deretter overført til slett () -funksjonen.
Eksempel 3:
#include#include #include
Produksjon:
Her er et skjermbilde av koden:
Kode Forklaring:
- Inkluder iostream header-filen i koden vår for å bruke funksjonene.
- Inkluder strengtekstfilen i koden vår for å bruke funksjonene.
- Ta med kartoverskriftsfilen i koden vår for å bruke funksjonene.
- Inkluder std navneområdet i koden vår for å bruke klassene uten å kalle det.
- Ring til hovedfunksjonen (). {Markerer begynnelsen på kroppen til hovedfunksjonen ().
- Lag et kart med navnet my_map hvis nøkler vil være strenger og verdier heltall.
- Sett inn verdier i kartet my_map. En nøkkel til ku og verdien 1 vil bli satt inn i kartet.
- Sett inn verdier i kartet my_map. En nøkkel til Cat og verdien 2 vil bli satt inn i kartet.
- Legg til en verdi 3 i kartet my_map med en nøkkel til en løve.
- Lag en iterator for å gjenta over kartet my_map på jakt etter nøkkelkatten.
- Slett elementet som iteratoren peker på.
- Bruk en iterator for å gjenta elementene på kartet my_map fra start til slutt.
- Skriv ut innholdet på kartet my_map på konsollen.
- Programmet må returnere produksjonen etter vellykket gjennomføring.
- Slutten av kroppen til hovedfunksjonen ().
Sammendrag:
- Et kart er en assosiativ beholder som lagrer varer i kartlagt form.
- Hvert element på kartet har en nøkkelverdi og en tilordnet verdi.
- På et kart kan to tilordnede verdier ikke dele nøkkelverdier.
- Nøkkelverdiene hjelper til med å sortere og identifisere elementer unikt.
- De tilordnede verdiene hjelper til med å lagre innhold tilknyttet nøkkelen.
- C ++ map lagrer unike nøkler i sortert rekkefølge.
- For å jobbe med C ++ - kart, lager vi en iterator for å itere over elementene.
- Med iteratoren kan vi utføre oppgaver som å søke og slette elementer fra kartet.