C ++ Emplace_back

C ++ Emplace_back
C ++ std :: Vector :: Emplace_back () -metoden utvider vektoren ved å legge til et nytt element. Hvis det kreves ytterligere plass, finner det omfordeling. Når et element blir lagt til eller trukket tilbake, har vektorer en lignende evne til de dynamiske matriser for automatisk å endre størrelse på. Vektorlagringen håndteres automatisk av beholderen. Foruten det, ved å bruke emplace_back () -funksjonen, kan man legge til et element til enden av en vektor, og følge den som allerede er der. Denne strukturen eksisterer allerede. La oss gå videre med noen eksempler for å forstå mer om Emplace_back () -metoden.

Syntaks av Emplace_back () i C++

Erklæringen for std :: Vector :: Emplace_back () -funksjonen fra std :: Vector Header er gitt i følgende:

# vektor.emplace_back (element);

Parameteren er elementet som legges til vektoren. Resultatene er parameteren som settes inn i vektoren på det siste punktet. Et unntak som heter Bad_alloc blir utstedt hvis omfordelingen mislykkes. Hvis et unntak kastes, endres ingenting på grunn av den sterke unntaksgarantien. For å unngå en feil fra å bli kastet, må parameteren være av samme type som beholderen.

Eksempel 1:

Bruken av Emplace_back () -funksjonen er demonstrert i følgende eksempel:

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

VectorVec;
Vec.emplace_back (1);
Vec.emplace_back (2);
Vec.emplace_back (3);
Vec.emplace_back (4);
Vec.emplace_back (5);
for (auto it = vec.begynne(); den != Vec.slutt(); ++ det)
cout<< " << *it;
retur 0;

Vi importerte modulene for bruk av metoder og klasser i programmet. Begynn med eksemplet hovedfunksjon. Vi opprettet et objekt som "VEC" av klassevektorer med datatypen Int. Deretter påkalte vi Emplace_back () -metoden med hvert vektorobjekt og satt inn ett vektorelement som et argument i Emplace_back () -metoden. "For" -sløyfen brukes deretter til å vise vektorens komponenter. I for -loopen har vi et auto nøkkelord med variabelen “It” som er satt med BEGIN -metoden. Vi setter også variabelen med sluttmetoden. Dette itererer vektorelementet med inkrementoperatøren og returnerer elementene i vektorene som vist i følgende utgangsskjerm:

Eksempel 2:

Som i forrige eksempel, har vi et heltallvektoreksempel som bruker Emplace_back () -funksjonen. Nå har vi et eksempel på et strengvektorprogram for å demonstrere bruken av Emplace () -funksjonen.

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

VectorVector_Item;
Vector_Item.emplace_back ("hei");
Vector_Item.emplace_back ("min");
Vector_Item.emplace_back ("geeks");
Vector_Item.emplace_back ("til");
Vector_Item.emplace_back ("emplace_back -metoden");
for (auto it = vector_item.begynne(); den != Vector_Item.slutt(); ++ det)
cout<< " << *it;
retur 0;

Etter å ha satt navneområdet STD, opprettet vi hovedmetoden for dette programmet. Inne i den etablerte vi vektorklasseobjektet som "Vector_Item". Deretter kalte vi dette objektet “Vector_item” med metoden Emplace_back () og satte inn vektorelementene som et argument. Vi satte inn strengvektorene i Emplace_back () -metoden. For å vise disse strengvektorene på konsollskjermen, distribuerte vi “For” loop -metoden. Du kan se at alle vektorstrengene genereres i horisontalt form.

Eksempel 3:

Eksemplet for å demonstrere karaktervektoren ved hjelp av emplace_back () -funksjonen.

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

VectormyVec;
MyVec.emplace_back ('l');
MyVec.emplace_back ('i');
MyVec.emplace_back ('n');
MyVec.emplace_back ('u');
MyVec.emplace_back ('x');
for (auto it = myVec.begynne(); den != MyVec.slutt(); ++ det)
cout<< " << *it;
retur 0;

Vi opprettet vektorobjektet som "myVec". Deretter, med vektorobjektet "MyVec", kalte vi Emplace_back () -metoden. Vi legger inn de forskjellige tegnene hver gang til Emplace_back () -metoden. "For" -sløyfen brukes til å skrive ut karakterverdiene fra Emplace_back () -metoden. Følgende skjermbilde viser karakterverdien som er returnert fra Emplace_back () -metoden.

Eksempel 4:

Bruk funksjonen Emplace_back () for å legge heltalene til en tom vektor og deretter bestemme størrelsen på den resulterende vektoren. For dette har vi en algoritme. Algoritmen er at vi må bruke Emplace_back () -funksjonen for å legge elementene til vektoren. Kontroller deretter om vektorens størrelse er 0. Hvis ikke, kan du pop bakelementet og øke tellervariabelen som opprinnelig ble initialisert til 0. Når vektorens størrelse er redusert til 0, gjenta denne prosedyren. Vis variabelens endelige verdi.

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

int count = 0;
Vectorv;
v.emplace_back (1);
v.emplace_back (2);
v.emplace_back (3);
v.emplace_back (4);
samtidig som (!v.tom ())
telle ++;
v.pop_back ();

cout<< "count value:" ;
cout<return 0;

Der har vi hovedmetoden for dette programmet. Vi har variabelen “Count” som initialiseres med verdien null. Deretter har vi et objekt “V” fra klassevektoren. Vi har Emplace_back () -metoden som vi satte inn heltallelementene. Etter det har vi en stundsløyfe som skriver ut telleverdien. Vektorelementet må ikke være null for at Loop skal være i kraft. Deretter økes tellingen av POP_BACK () -metoden. Følgende er et skjermbilde som viser telleverdien:

Eksempel 5:

Push_back () konverterer en streng til en vektor. Et nytt strengobjekt blir først implisitt generert og initialisert med den medfølgende røye*. Den originale strengen er et midlertidig objekt, Push Back blir deretter påkalt. Kopier denne strengen i vektoren med flyttingsfunksjonskonstruktøren. Deretter blir den forbigående elementet ødelagt. På den annen side bygger Emplace_back () strengene på plass, det opprettes ingen midlertidige strenger; I stedet kalles Emplace_back () direkte med en char* -parameter. Deretter genererer den en streng som lagres i vektoren som ble initialisert med denne røye*. På denne måten unngår vi å lage og avhende et meningsløst midlertidig strengobjekt.

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

vektormy_veekt;
my_veekt.emplace_back ('x', 12);
my_veekt.push_back (make_pair ('y', 15));
for (int i = 0; icout<<retur 0;

Inne i INT -hoved erklærte vi at den prioriterte vektorkøen er erklært som objektet “my_veekt”. Deretter har vi Emplace_back () -metoden som har parinngangen på plass. Etter det satte vi inn parverdiene med Push_back () -metoden. Både parverdiene fra Emplace_back () og push_back () er trykt ved hjelp av en for loop. De innsatte parverdiene blir utført i følgende ledetekst:

Konklusjon

Nå er det veldig tydelig for deg funksjonaliteten til Emplace_back () -metoden i C++. Fordelen med plassering er at den utfører en innsetting på stedet og forhindrer behovet for å duplisere et objekt. Hvilken vi bruker spiller ingen rolle for de primitive datatypene. Imidlertid anbefales bruk av emplaten () for gjenstandene på grunn av ytelsen. Vi dekket alle mulige eksempelprogrammene for å forklare Emplace_back () -funksjonen. Videre differensierte vi mellom Emplace_back () -metoden og Push_back () -metoden med eksempelprogrammet.