Hvordan legger du deg til en vektor i C++?

Hvordan legger du deg til en vektor i C++?
Å legge til en vektor betyr å legge til ett eller flere elementer på baksiden av vektoren. C ++ -vektoren har medlemsfunksjoner. Medlemsfunksjonene som kan brukes til å legge til, er: push_back (), innsats () og emplace (). Den offisielle funksjonen som skal brukes til å legge til er push_back (). Bruken av disse tre medlemsfunksjonene for å legge til en C ++ -vektor blir forklart i denne artikkelen.

For å bruke en vektor, må vektorbiblioteket inkluderes øverst i programmet, med

#inkludere

Alle vektorkoder for denne artikkelen er i C ++ Main () -funksjonen.

Artikkelinnhold

  • Skyv tilbake
  • Sette inn
  • Empete
  • Konklusjon

Skyv tilbake

Et enkelt element kan skyves på baksiden av en vektor. Det er to syntaks for Push_back () medlemsfunksjoner, som er:

void push_back (const t & x)
void push_back (t && x)

De returnerer begge ugyldige, og de brukes på samme måte.

Følgende kode har en vektor av blomster i Storbritannia. En blomst til er push_back (), jeg.e., vedlagt, til vektoren. Vektoren er en vektor av strengene i strengklassen.

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

VectorVtr = "Blue Throatwort", "BottleBrush", "Brodiaea", "Broom", "Columbine";
for (int i = 0; icout<cout<VTR.push_back ("cornflower");
for (vektor :: iterator it = vtr.begynne(); den != VTR.slutt(); det ++)
cout<< *it << ", ";
cout<retur 0;

Utgangen er:

Blå halsvort, Bottle Brush, Brodiaea, Broom, Columbine,
Blå halsvort, Bottle Brush, Brodiaea, Broom, Columbine, Cornflower,

Programmet begynner med de nødvendige inkluderingsdirektivene. Så er det hovedfunksjonen () med all vektorkode. I hovedfunksjonen er en vektor med fem strenger av blomsternavn erklært. Denne listen vises deretter ved hjelp av en for-loop og indekser. Hoveduttalelsen i koden er:

VTR.push_back ("cornflower");

Dette uttrykket legger til et annet blomsternavn til vektorlisten. Det er nå seks elementer i vektoren. Neste kodesegment viser settet med seks elementer, ved hjelp av en for-loop og iteratorer.

Skyv tilbake til tom vektor

En vektor må ikke alltid opprettes med elementer. En vektor kan opprettes, tom. Push_back () medlemsfunksjonen kan fremdeles brukes til å mate inn elementer til en tom vektor. Følgende kode illustrerer dette:

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

VectorVtr;
VTR.Push_back ("Blue Throatwort");
VTR.Push_back ("BottleBrush");
VTR.push_back ("Brodiaea");
for (int i = 0; icout<cout<retur 0;

Utgangen er:

Blå halsvort, flaskebørste, Brodiaea,

I hovedfunksjonen () erklærer den første uttalelsen en tom vektor. De neste tre utsagnene mater vektoren med tre blomsternavn, ved hjelp av Push_back () -funksjonen. Kodesegmentet som følger viser de tre verdiene til vektoren.

Sette inn

To forenklede funksjoner for å sette inn en vektor er:

en.Sett inn (P, T)
en.Sett inn (P, RV)

hvor 'a' er navnet på en vektor og p er en iterator som peker på elementet foran hvilken innsats vil finne sted. Disse funksjonene brukes på en lignende måte, som illustrert i følgende eksempel:

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

VectorVtr = "Blue Throatwort", "BottleBrush", "Brodiaea", "Broom", "Columbine";
vektor :: iterator p = vtr.slutt();
vektor :: iterator pret = vtr.Sett inn (P, "Cornflower");
for (int i = 0; icout<cout<cout<< *pRet<retur 0;

Utgangen er:

Blå halsvort, Bottle Brush, Brodiaea, Broom, Columbine, Cornflower,
Cornflower

De to spesielle uttalelsene i denne koden er:

vektor:: Iterator P = VTR.slutt();
vektor:: Iterator Pret = VTR.Sett inn (P, "Cornflower");

Den første uttalelsen her returnerer en iterator som peker rett etter det siste elementet i vektoren. Etter innsetting kom iteratoren tilbake, peker på det innsatte elementet. I dette tilfellet er iteratoren returnert. Uttrykket, *prat i koden, oppnår verdien som er pekt på av prat.

en.Sett inn (P, N, T)

Dette setter inn n av de samme T -verdiene. I dette tilfellet må innsetting finne sted på slutten, som i følgende kode:

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

VectorVtr = "Blue Throatwort", "BottleBrush", "Brodiaea", "Broom", "Columbine";
vektor :: iterator p = vtr.slutt();
vektor :: iterator pret = vtr.Sett inn (P, 3, "Cornflower");
for (int i = 0; icout<cout<cout<retur 0;

Utgangen er:

Blå halsvort, Bottle Brush, Brodiaea, Broom, Columbine, Cornflower, Cornflower, Cornflower,
5

To nye uttalelser av interesse for dette programmet er:

vektor:: Iterator Pret = VTR.Sett inn (P, 3, "Cornflower");
og
cout << pRet - vtr.begin() << endl;

Den første uttalelsen her setter inn 3 elementer av "Cornflower". Den andre uttalelsen beregner og returnerer indeksen som tilsvarer iteratoren som er returnert med innsatsen () -funksjonen. Denne iteratoren peker på det første elementet i de innsatte elementene.

en.Sett inn (P, I, J)

Dette setter inn en rekke elementer fra en lignende vektor som interessen av interesse. Jeg og J er iteratorer. Elementet som er angitt med j er ikke satt inn. Et slikt område er betegnet med [i, j) . I situasjonen med å legge igjen, må rekkevidden settes inn på baksiden. Følgende program illustrerer dette:

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

VectorVec = "Cornflower", "Corsage Orchid", "Dill", "Drumstick", "Foxglove";
vektor :: iterator itb = vec.begynne();
ITB ++;
vektor :: iterator ite = vec.slutt();
ite--; ite--;
VectorVtr = "Blue Throatwort", "BottleBrush", "Brodiaea", "Broom", "Columbine";
vektor :: iterator p = vtr.slutt();
vektor :: iterator pret = vtr.sett inn (p, itb, ite);
for (int i = 0; icout<cout<cout<retur 0;

Utgangen er:

Blue Throatwort, Bottle Brush, Brodiaea, Broom, Columbine, Corsage Orchid, Dill,
5

Den andre uttalelsen i Main () -funksjonen returnerer en iterator som peker på "Cornflower". Den tredje uttalelsen gjør at denne iteratoren peker på "Corsage Orchid". Uttalelsen etter returnerer en iterator som peker rett etter "Foxglove". Uttalelsen følgende gjør at denne iteratoren peker på "trommelstokk". Så rekkevidden er nå,

"Corsage Orchid", "Dill", "Drumstick"

Tilsvarende [ITB, it) . Imidlertid er rekkevidden som er satt inn ("Corsage Orchid", "Dill") som forklart ovenfor.

en.Sett inn (P, IL)

En liste bokstavelig kan settes inn på baksiden av vektoren. I dette tilfellet settes det siste elementet på listen inn. Følgende program illustrerer dette:

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

VectorVtr = "Blue Throatwort", "BottleBrush", "Brodiaea", "Broom", "Columbine";
vektor :: iterator p = vtr.slutt();
vektor :: iterator pret = vtr.Sett inn (P, "Corsage Orchid", "Dill", "Drumstick");
for (int i = 0; icout<cout<cout<retur 0;

Utgangen er:

Blue Throatwort, Bottle Brush, Brodiaea, Broom, Columbine, Corsage Orchid, Dill, Drumstick,
5

Den spesielle uttalelsen i dette programmet er:

vektor:: Iterator Pret = VTR.Sett inn (P, "Corsage Orchid", "Dill", "Drumstick");

Den innsatte listen er:

"Corsage Orchid", "Dill", "Drumstick"

Den returnerte iteratoren peker på det første elementet i den innsatte listen.

Empete

Emplace er som en innsats. Siden denne artikkelen tar for seg å legge seg, må emplaten finne sted på baksiden av vektoren.

en.Emplace (P, Args)

Dette er den forenklede medlemsfunksjonen til Emplace (). P er en iterator som peker på elementet, foran det, det nye elementet er satt inn. Funksjonen returnerer en iterator som peker på elementet som er satt inn. Følgende program illustrerer dette:

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

VectorVtr = "Blue Throatwort", "BottleBrush", "Brodiaea", "Broom", "Columbine";
vektor :: iterator p = vtr.slutt();
vektor :: iterator pret = vtr.Emplace (P, "Cornflower");
for (int i = 0; icout<cout<cout<< *pRet<retur 0;

Utgangen er:

Blå halsvort, Bottle Brush, Brodiaea, Broom, Columbine, Cornflower,
Cornflower

Den spesielle uttalelsen i dette programmet er:

vektor:: Iterator Pret = VTR.Emplace (P, "Cornflower");

en.emplace_back (args)

Her er 'A' navnet på vektoren. emplace_back () er som push_back (). Den legger et element til vektoren. Den returnerer ikke en iterator. Den returnerer en referanse til elementet som er satt inn. Følgende program illustrerer bruken:

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

VectorVtr = "Blue Throatwort", "BottleBrush", "Brodiaea", "Broom", "Columbine";
for (int i = 0; icout<cout<VTR.Emplace_back ("Cornflower");
for (vektor :: iterator it = vtr.begynne(); den != VTR.slutt(); det ++)
cout<< *it << ", ";
cout<retur 0;

Utgangen er:

Blå halsvort, Bottle Brush, Brodiaea, Broom, Columbine,
Blå halsvort, Bottle Brush, Brodiaea, Broom, Columbine, Cornflower,

Hoveduttalelsen i programmet er:

VTR.push_back ("cornflower");

Dette uttrykket legger til et annet blomsternavn til vektorlisten. Det er nå seks elementer i vektoren. Neste kodesegment i programmet viser settet med seks elementer, ved hjelp av en for-loop og iteratorer.

Bøyes tilbake til tom vektor

En vektor må ikke alltid opprettes med elementer. En vektor kan opprettes, tom. Emplace_back () medlemsfunksjonen kan fremdeles brukes til å mate i elementer til en tom vektor. Følgende kode illustrerer dette:

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

VectorVtr;
String str1 = VTR.Emplace_back ("Blue Throatwort");
String str2 = VTR.Emplace_back ("BottleBrush");
String str3 = VTR.emplace_back ("Brodiaea");
cout<< str1 <cout<< str2 <cout<< str3 <retur 0;

Utgangen er:

Blå halsvort
flaskebørste
Brodiaea

I hovedfunksjonen () erklærer den første uttalelsen en tom vektor. De neste tre utsagnene mater vektoren med tre blomsternavn, ved hjelp av Emplace_back () -funksjonen. Kodesegmentet som følger viser de tre verdiene til vektoren.

Merk; En returnert referanse mottas av typen element.

Konklusjon

Et enkelt element kan legges til en vektor med Push_back () og emplace_back () vektormedlem funksjoner. INSERT () medlemsfunksjonen kan også brukes i sine forskjellige overbelastede former. Insert () -funksjonen fungerer med iteratorer.