C ++ kartfunksjoner

C ++ kartfunksjoner
“Kart er assosiative containere som brukes til å lagre objekter på en kartlagt måte. Hver nøkkel i et nøkkelverdipar som inneholder alle komponentene på et kart er distinkt. Nøkler brukes til bestilling, men hver nøkkel har et sett med relaterte verdier. Data kan legges til og fjernes når det er nødvendig. På programmeringsspråket C ++ har kart elementer som er opprettet ved å kombinere en nøkkelverdi og en definert verdi.

For to primære formål kan C ++ programmerere finne kartstrukturen nyttig. For det første, ved bruk av nøkkelen, muliggjør et kart rask og enkel tilgjengelighet til verdien. Opprette enhver type indeks eller peker kan dra nytte av denne attributtet. En nøkkel må være unik gjennom det integrerte datarammen, som kartet gir for å gjøre. Dette forhindrer dataduplisering; Derfor er det en annen fordel ved å bruke kartet.

For eksempel, hvis du oppretter en handelsapp og må beholde formuesverdiene med ticker -skilt, er et kart en nyttig tilnærming på grunn av disse to fordelene. Et kart ville være en effektiv metode å gi og sjekke det eksisterende været i mange byer over hele verden hvis vi hadde utviklet en vær -app. Vi vil sannsynligvis bruke et kart på en online markedsplass for å finne produkter etter merker eller kategorier.”

Når skal du unngå å bruke et C ++ -kart?

C ++ 's kartfunksjon er egnet for å lokalisere verdier effektivt etter nøkkel. Men å finne elementer på kartet ved bruk av et heltall innebærer å krysse det komplette kartet en gang. Å iterere gjennom et kart kan bli tidkrevende når et kart vokser i størrelse hvis vi ønsker å kunne finne verdier i det. Et toveis kart leveres av Boost-modulen, noe som gjør det mer effektivt når vi henter dataene ofte. Fordi standard C ++ -modul ikke inneholder denne datamodellen, må brukeren enten skaffe Boost -biblioteket på hver datamaskin der programmet blir utført eller integrere boost -pakken som en del av den statiske koblingen.

Et kart er kanskje ikke den beste strukturen å bruke hvis vi innser at vi trenger å finne et kart etter element i en enkel applikasjon. Bruk en C ++ matrise, buffer, stabel eller annen datatype som kan gjøre applikasjonen enklere å forstå og mer effektiv.

La oss diskutere arbeidet med kartfunksjoner i C++.

Eksempel nr. 1

Vi kjører koden i dette tilfellet for å vise hvordan du implementerer kartfunksjoner. Vi kan iterere kartets komponenter. For å gjøre dette, trenger vi bare å konstruere en iterator og deretter bruke den.

#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

kart tildeling1;
tildeling1.Sett inn (par(2, 60));
tildeling1.Sett inn (par(4, 80));
tildeling1.Sett inn (par(6, 70));
tildeling1.Sett inn (par(8, 90));
tildeling1.Sett inn (par(10, 50));
tildeling1.Sett inn (par(12, 80));
tildeling1 [14] = 40;
kart:: Iterator ITR;
cout << "\nThe map of the assignment1 is : \n";
cout << "\tKEY\tELEMENT\n";
for (itr = tildeling1.begynne(); itr != tildeling1.slutt(); ++ itr)
cout << '\t' << itr->først << '\t' << itr->sekund
<< '\n';

cout << endl;
kart Assignment2 (Assignment1.Begynn (), Assignment1.slutt());
cout << "\nThe map of the assignment2 after"
<< " assign from assignment1 is : \n";
cout << "\tKEY\tELEMENT\n";
for (ITR = Assignment2.begynne(); itr != tildeling2.slutt(); ++ itr)
cout << '\t' << itr->først << '\t' << itr->sekund
<< '\n';

cout << endl;

Her skal vi integrere de nødvendige overskriftsfilene. og ved begynnelsen av koden. Nå påkaller vi hovedfunksjonen (). Vi vil bruke kartkommandoen. Innenfor denne kommandoen initialiserer vi to heltall. Nå må vi sette inn forskjellige tilfeldige verdier av elementer. Så vi har brukt funksjonsinnsatsen ().

"Par" -argumentet vil ha to heltall. Vi spesifiserer verdiene til 6 forskjellige oppgaver. Nå må vi bruke en annen metode for å introdusere verdien i et kart. Så skriver vi ut kartoppgaven ved å bruke MAP -kommandoen. Sammen med dette bruker vi en iterator. "Cout" -uttalelsen brukes til å skrive ut linjen. Da vil "cout" -uttalelsen bli brukt til å vise nøklene og elementene. Så gjør vi et økning i verdien av "ITR". Deretter vil vi bruke "cout" -uttalelsen. Vi har laget en peker som peker på iteratoren. Vi vil bruke "endl" -begrepet for å kode i neste linje.

Nå vil vi tilordne varene fra Assignment1 til Assignment2. Vi vil igjen bruke MAP -kommandoen. Sammen med dette har vi benyttet oss. Disse funksjonene brukes til å starte og avslutte verdiene til tildeling1. Nå vil vi demonstrere alle elementene på det nødvendige kartet. Uttalelsen om "cout" vil bli brukt for å skrive ut linjen "kartet over tildelingen2 etter tildeling fra tildeling1 er". Så brukes "cout" for å vise nøklene og elementene.

Nok en gang bruker vi “for” -sløyfen. Vi må tilfredsstille tilstanden. Så gjør vi et økning i iteratoren. Vi vil konstruere pekeren til det første og andre elementene i oppgaven1. For å starte koden fra den nye linjen, bruker vi “Endl”. Nå vil vi fjerne alle elementene opp til elementet som har "3" nøkkelverdien i tildelingen1.

cout << "\nassignment2 after eliminating the "
"elementer som har nøkkelverdien på mindre enn 3: \ n";
cout << "\tKEY\tELEMENT\n";
tildeling2.Sletting (tildeling2.Begynn (), Assignment2.finn (3));
for (ITR = Assignment2.begynne(); itr != tildeling2.slutt(); ++ itr)
cout << '\t' << itr->først << '\t' << itr->sekund
<< '\n';

int n;
n = tildeling2.slette (4);
cout << "\nassignment2.erase(4) : ";
cout << n << " removed \n";
cout << "\tKEY\tELEMENT\n";
for (ITR = Assignment2.begynne(); itr != tildeling2.slutt(); ++ itr)
cout << '\t' << itr->først << '\t' << itr->sekund
<< '\n';

cout << endl;
cout << "assignment1.lower_bound(10) : "
<< "\tKEY = ";
cout << assignment1.lower_bound(10)->først << '\t';
cout << "\tELEMENT = " << assignment1.lower_bound(10)->sekund
<< endl;
cout << "assignment1.upper_bound(10) : "
<< "\tKEY = ";
cout << assignment1.upper_bound(10)->først << '\t';
cout << "\tELEMENT = " << assig>nment1.øvre_bound (10)-> sekund
<< endl;
retur 0;

Uttalelsen om "cout" blir brukt for å skrive ut uttalelsen “Assignment2 etter å ha eliminert elementene som har nøkkelverdien mindre enn 3”. "Cout" -uttalelsen skriver også ut tastene og deres verdier. Vi har brukt slettingsfunksjonen (). Her har vi brukt BEGIN () -metoden. På grunn av denne funksjonen begynner den nøkkelverdiene til tildeling2. Da må vi bruke Find () -metoden for å skaffe elementet på kartet. Vi bruker BEGIN () og END () -funksjonen, som er assosiert med iteratoren. Så konstruerer vi pekeren til det første og andre elementet i iteratoren og bruker "cout" -uttalelsen for å skrive ut disse verdiene.

Nå vil vi eliminere elementet som har nøkkelverdi 4. Ved å gjøre dette, må vi initialisere "n" -variabelen. Datatypen til denne variabelen er et heltall. Så bruker vi slett () -funksjonen. Denne funksjonen inneholder parameteren for verdien som vi ønsker å bli fjernet. "Cout" -uttalelsen vil bli brukt til å slette det elementet. Nok en gang har vi brukt "for" -sløyfen og pekeren til iteratoren. Vi skriver ut den nedre grensen og den øvre grensen på kartet for tildeling1 ved å bruke "cout" -uttalelsen.

I neste linje vil vi bruke "cout" -uttalelsen for å lage en peker som peker på den andre verdien av tildelingen1. Vi skriver også inn "endl" nøkkelordet for å gå til neste linje for koding. Nå vil den øvre_bound () metoden for tildeling1 bli kalt. Pekeren vil bli opprettet for å peke på den andre verdien av øvre grense av tildelingen1.

Eksempel nr. 2

I denne illustrasjonen har nøkkelverdien og verdien som er koblet til nøkkelen begge forskjellige datatyper. Det er ikke mulig å konfigurere verdiene en om gangen; De må leveres parvis.

#inkludere
#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

kart Arbeidere;
Arbeidere [221] = "Anikaa";
Arbeidere [320] = "Zeeshan";
Arbeidere [345] = "Daniyal";
Arbeidere [237] = "Dania";
Arbeidere [189] = "Azka";
cout << "Workers[190]=" << Workers[237] << endl << endl;
cout << "Size of the map: " << Workers.size() << endl;
cout << endl << "The Original Order:" << endl;
for (kart :: iterator jj = arbeidere.begynne(); JJ!= Arbeidere.slutt(); ++ JJ)

cout << (*jj).first << ": " << (*jj).second << endl;

cout << endl << "The Inverse Order:" << endl;
for (kart :: reverse_iterator jj = arbeidere.rbegin (); JJ!= Arbeidere.Rend (); ++ JJ)

cout << (*jj).first << ": " << (*jj).second << endl;

I starten av programmet vil vi inkludere fire viktige biblioteker, som inkluderer ,, og og . Tross alt vil det standardnavneriet bli brukt som STD. Vi konstruerer kartet over arbeiderne. Vi vil gi to datatyper som argumenter på kartet. Datatypen inkluderer heltall og streng. Nå skal vi tilordne henholdsvis ID -ene til arbeiderne. Vi bruker array -indeksformatet for å tildele verdiene. "Cout" -uttalelsen brukes til å vise navnet på arbeideren hvis ID er 190.

Videre har vi brukt "cout" -uttalelsen for å vise kartstørrelsen. Størrelsen vil bli skrevet ut etter uttalelsen “størrelsen på kartet”. Deretter vil "cout" -uttalelsen bli brukt til å vise den opprinnelige rekkefølgen på ID -ene. Innenfor Loop vil vi bruke “Map” -kommandoen. Vi initialiserer strengen og iteratoren. Så starter vi kartet over arbeiderne ved å bruke start () -metoden. For å avslutte kartet over arbeiderne, har vi brukt slutt () -funksjonen.

I den siste delen av "for" -sløyfen har vi økt verdien av iteratoren. "Cout" -uttalelsen vil bli brukt til å vise elementene på kartet. Så vil vi igjen bruke "cout" -uttalelsen for å vise linjen "den inverse orden". Vi vil bruke BEGIN () og END () -metoden for å starte og avslutte elementene på kartet. Vi vil iterere elementene til tilstanden er oppfylt. Til slutt brukes "cout" -uttalelsen til å skrive ut elementene på en omvendt måte.

Eksempel nr. 3

Noen få av kartfunksjonene brukes i det påfølgende programmet. Før den itererer for en slik verdi som samsvarer med en spesifikk nøkkel, legger den opprinnelig til andre elementer på kartet.

#inkludere
#inkludere
#inkludere
#inkludere
ved hjelp av navneområdet STD;
int main ()

kart Std;
Std.Sett inn (std :: par(736, "Jamil"));
Std.Sett inn (std :: par(233, "Dua"));
Std.Sett inn (std :: par(837, "Aima"));
STD [348] = "Snobar";
STD [646] = "Tania";
cout << "Map Size: " << Std.size() << endl << endl;
cout << endl << "Real order of the values:" << endl;
for (kart :: iterator iter = std.begynne(); iter!= STD.slutt(); ++ iter)

cout << (*iter).first << ": " << (*iter).second << endl;

std :: kart:: Iterator IT = STD.finn (348);
hvis det != STD.slutt())
std :: cout < "" << Std.find(348)->sekund << '\n';

Først av alt vil vi innlemme overskriftsfilene. Headerfilen tar for seg strengene i koden. Headerfilen tar for seg inngangs- og utgangsfunksjonalitetene. Overskriftsfilen tar for seg kartet. Og den siste overskrifterfilen omhandler verktøyets funksjonalitet. La oss starte kodingen i kroppen til Main () 0f -funksjonen. Vi kjører “Map” -kommandoen. Ved hjelp av dette vil vi initialisere et kart med nøklene og deres passende verdier. Datatypen på tastene er et heltall, og datatypen på verdiene deres er "streng".

Nå vil vi sette inn merkene og navnene på studentene på kartet ved hjelp av Insert () -funksjonen. Vi bruker denne funksjonen for å legge til dataene til de tre studentene. Deretter bruker vi array -indeksformatet for å sette inn merkene og navnene på studentene. Dataene til to studenter vil bli satt inn ved å bruke array -indeksformatet.

Videre vil vi bruke "cout" -metoden. Uttalelsen “Cout” viser linjen “kartstørrelse” på skjermen før kartet. Innenfor denne "cout" -uttalelsen vil vi bruke størrelse () -metoden. Nå vil vi vise navnene og tallene på studentene i det opprinnelige formatet. "Cout" -uttalelsen brukes til å skrive ut teksten "Verdens ordre" ". Vi bruker “Endl” -kommandoen på begge sider av denne teksten for å skrive ut denne teksten på en egen linje. Nå har vi brukt "for" -løkken. Vi vil også bruke BEGIN () -funksjonen for å begynne å skrive ut fornavnet og merkene til studenten på et kart.

Tilsvarende brukes End () -metoden for å vise etternavnet til studenten på et kart. "Cout" -uttalelsen vil vise disse første og siste verdiene. På slutten av programmet vil vi bruke en annen kartfunksjon for å finne (). Vi ønsker å oppdage navnet på studenten, hvis nummer er 348. Så vi vil kalle Find () -metoden. Vi bruker std :: kart og std :: iterator. Så har vi brukt "hvis" -tilstanden. Vi bruker slutten () kartfunksjonen for å oppfylle "hvis" -tilstanden. For å skrive ut navnet på studenten hvis karakterer er 348, vil vi bruke STD :: Cout -metoden. Vi oppretter også pekeren, som peker på den andre verdien av kartet.

Konklusjon

Vi har diskutert et C ++ -kart og hvordan du bruker kartfunksjoner i denne artikkelen. Vi demonstrerte kort å legge til elementer og hente dem ved bruk av kartet i forskjellige eksempler. Kart er komponenten i standardmalbiblioteket. Kart er assosiative beholdere som inneholder bestilte nøkkelverdipar; Nesten hver nøkkel er distinkt og kan bare legges til eller fjernes fullstendig. Nøkkelverdier kan ha sine relaterte verdier som vil bli endret. På et kart inneholder de definerte verdiene dataene som er relatert til nøkkelen, mens nøkkelverdiene vanligvis brukes til å ordne og identifisere bestemte komponenter.