C ++ multimap

C ++ multimap
I dag vil vi lære om multimap og hvorfor vi bruker multimap. Vi vil lære å skrive implementering og de viktige funksjonene til multimap gjennom detaljerte eksempler. Men før vi hopper på multimap, vil vi lære om det grunnleggende på kartet i C ++, slik at det vil være enkelt å lære hvordan multimap vil fungere.

I C ++ er kart containerne som lagrer dataelementene i nøkkelverdipar. I kart beholder disse nøkkelverdiparene dataelementer. Dette betyr at hver nøkkel har sin elementverdi, men nøkkelen må være unik å få tilgang til raskt. Som standard er nøkkelverdiparene ordnet i sortert rekkefølge.

Introduksjon

I C ++ er multimaps beholderen som beholder elementene i nøkkelverdipar på en organisert måte slik at de kan jobbe effektivt og raskt. Disse nøkkelverdiene brukes til å ordne elementene og unikt identifisert slik at innholdet relatert til den tasten lagres i kartlagte verdier. Den eneste signifikante forskjellen mellom multimap og kartet er muligheten for gjentatte nøkler som ikke er unike, og det bruker "<” operator to compare the keys.

Syntaks

I Multimap STL vil vi skrive nøkkelordet "mal" for å passere datatypen som en parameter, slik at vi ikke trenger å skrive koden for hver datatype og deretter skrive "" større enn operatøren for å lukke multimap -klassen.

Parametere

nøkkel: brukes til å fortelle nøkkeltypen å lagre nøkkelen i et multimap.

type: brukes til å fortelle datatypen om kartlagt verdi i en multimap.

sammenligne: er en valgfri parameter, og den lar deg sammenligne to elementverdier som sorteringsnøkler for å finne ut hvordan de skal ordnes i multimap. Som standard brukes det binære predikatet mindre.

Alloc: brukes til å tildele verdiene i multimap.

Eksempel

Her er et enkelt eksempel på multimap. La oss starte med å beskrive implementeringen av eksemplet og også forstå hva vi har gjort i dette eksemplet. Men før det trenger vi en C ++ -kompilator der vi skriver og utfører eksempelkoden. Så åpne C ++ -kompilatoren.

Inkludert grunnleggende biblioteker

I hvert program for C ++ må vi inkludere de viktige og grunnleggende bibliotekene relatert til programmet vårt, slik at vi ikke trenger å skrive koden til den forhåndsdefinerte funksjonen til C++. Ved å bruke pakker vil koden vår være presis og lett å forstå, og den vil også samles effektivt. Vi skriver “#” -tegnet for hver pakke som vil lede kompilatoren til å laste over toppfilen. Så skriver vi "Inkluder" nøkkelord slik at kompilatoren vil forstå at vi inkluderer en hvilken som helst pakke i C++. Så åpner vi “” -operatøren.

I dette eksemplet har vi brukt tre biblioteker; “Iostream” legger inn dataene fra brukeren og viser dataene til brukeren. Det andre er "String", så hvis vi bruker noen strengverdi i hele programmet, må vi inkludere strengpakken, og den tredje er "Map" fordi vi bruker kartleggingsteknikker i programmet vårt.

#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;

Erklære og initialisere nøkkelverdiparene

Så skriver vi hovedfunksjonen () i programmet slik at vi kan skrive den faktiske kodelinjen vi ønsker å implementere. Først vil vi erklære multimap-tupelen som heter "Mulmap" av nøkkelverdiparet "int" og "streng" og initialisere noen data i den. For streng skriver vi dataene i doble anførselstegn. Så sjekker vi størrelsen på "Mulmap" -tupelen ved å bruke den forhåndsdefinerte størrelsen () -funksjonen sammen med "Mulmap" og deretter vise størrelsen ved å bruke den forhåndsdefinerte COUT () -metoden. For å vise elementene i en tuple en etter en, har vi kalt "for loop".

int main ()

multimap mulmap =
1, "Islamabad",
2, "Lahore",
3, "multan",
4, "Karachi"
;
cout << "The size of multimap is: " << mulmap.size()
<cout << "Elements in multimap are: " << endl;
cout<<"\tKEY\t\tELEMENT\n";
for (auto itr: mulmap)
cout << "\t" << itr.first <<"\t\t"<< itr.second << endl;

Her er utgangen fra den forrige delen av koden. Som du ser, nå har vi multimap-tuple-størrelsen og nøkkelverdiparene 'elementer.

Sette inn nye data ved å bruke Insert () -funksjonen

Etter å ha erklært multimap, ønsker vi å implementere en av funksjonene til multimap, som er innsat () -funksjonen. Siden vi allerede har satt inn noen data i multimap -tupelen, ønsker vi å sette inn noen nye data. For det vil vi skrive multimap -tupeltnavnet, “Mulmap,” og deretter sammenkoble innsatsen () -funksjonen med den. I Mulmap-parenteser, skriv nøkkelordet “Make-Pair” fordi vi passerer data i parform i Multimap, og skriver deretter det nye paret der vi ønsker å sette inn data i den eksisterende “Mulmap” -tupelen.

Og så brukte vi "for loop" for å vise verdiene i skallet en etter en i sortert rekkefølge. Etter å ha skrevet ut nøkkelverdiparene, ønsker vi å sjekke igjen på størrelse med den oppdaterte “Mulmap” -tupelen, så vi har igjen brukt størrelsesfunksjonen og passert størrelsen () -funksjonen i Cout () -metoden slik at vi kan Vis størrelsen på "Mulmap" til brukeren.

cout << "\nInserting New Elements in Multimap: " << endl;
cout<<"\tKEY\t\tELEMENT\n";
Mulmap.sett inn (make_pair (0, "rawalpindi"));
Mulmap.Sett inn (make_pair (5, "Hyderabad"));
for (auto itr: mulmap)
cout << "\t" << itr.first <<"\t\t"<< itr.second << "\t" << endl;

cout <<"Elements in multimap after updating: " << mulmap.size() << endl;

La oss se på utdataene fra det forrige datautdraget på Multimap, der vi har satt inn nye data. Som du ser vises nøkkelverdipar på en organisert måte. Og etter å ha oppdatert nøkkelverdiparene, har vi størrelsen på multimap som 6.

Fjerne data fra multimap ved å bruke sletting () -funksjon

For å fjerne dataelementer fra mulmap -tupelen, bruker vi sletting () -funksjon og passerer funksjonen i cout () -metoden slik at vi kan vise "mulmap" -tupelen etter å ha fjernet elementer fra tupelen. Så igjen, sjekker vi størrelsen på "mulmap" -tupelen ved å bruke størrelsen () -funksjonen.

cout<<"\nRemoving elements from multimap: \n";
cout<<"\tKEY\t\tELEMENT\n";
Mulmap.Slett (Mulmap.Begynn (), Mulmap.finn (4));
for (auto itr: mulmap)
cout << "\t" << itr.first <<"\t\t"<< itr.second << "\t" << endl;

cout <<"Elements in multimap after removing: " << mulmap.size() << endl;

Her er utgangen fra den illustrerte delen, som vi har implementert ovenfor. Som vist nedenfor er størrelsen på "Mulmap" -tupelen 2:

Sjekk den øvre grensen til den eksisterende Mulmap -tupelen

For å sjekke det første elementet i den oppdaterte tupelen til “Multimap”, vil vi bruke Upper_Bound () -funksjonen og gi nøkkelverdien til funksjonen.

Cout << “\nElement on the Upper bound of multimap is: “ << endl;
cout<<”\tKEY\t\tELEMENT\n”;
cout << “\t” << mulmap.upper_bound(0)->først << “\t\t” << mulmap.upper_bound(0)->sekund << endl;

Som du har sett, har vi passert en 0 -verdi til Upper_Bound () -funksjonen. Imidlertid har vi den øvre grensen til nøkkelelementet 4 fordi nå inneholder "mulmap" -tupelen bare to nøkkelelementer i den, og den øvre vises nedenfor:

Sjekk undergrensen i den eksisterende Mulmap -tupelen

La oss nå sjekke det siste elementet i "mulmap" -tupelen ved å bruke nedre_bound () -funksjonen til multimap og skrive ut den gjennom cout () -metoden.

cout << "\nElement on the lower bound of multimap is: " << endl;
cout<<"\tKEY\t\tELEMENT\n";
cout << "\t" << mulmap.lower_bound(5)->først << "\t\t" << mulmap.lower_bound(5)->sekund << endl;

Her er utgangen fra den nedre grensen til "Mulmap" -tupelen:

Til slutt vil vi returnere 0 til Main () -funksjonen og lukke de krøllete seler:

Konklusjon

I denne artikkelen har vi lært multimapet ved å implementere enkle eksempler med detaljerte forklaringer. Vi diskuterte skrivestilen til multimap. Vi har også lært noen av de viktige funksjonene til multimap i C ++ med en detaljert forklaring av hver kodeinje.