Vektor i C ++ Standard skabelonbibliotek (STL) med eksempel

Indholdsfortegnelse:

Anonim

Hvad er en C ++ -vektor?

En C ++ VECTOR er et dynamisk array, der kan ændre størrelsen på sig selv automatisk. Ændringen af ​​størrelse sker, når et element er tilføjet eller slettet fra vektoren. Opbevaringen håndteres automatisk af containeren. Elementerne i en vektor lagres i sammenhængende lagring. Dette giver C ++ programmerere adgang til og krydser vektorelementerne ved hjælp af iteratorer.

Indsættelsen af ​​nye data i en vektor sker i slutningen. Dette tager en differentieret tid. Fjernelsen af ​​et element fra en vektor tager konstant tid. Årsagen er, at der ikke er behov for at ændre størrelsen på vektoren. Indsættelse eller sletning af et element i begyndelsen af ​​vektoren tager lineær tid.

I denne C ++ -studie lærer du:

  • Hvad er en C ++ -vektor?
  • Hvornår skal man bruge en vektor?
  • Sådan initialiseres vektorer i C ++
  • Iteratorer
  • Modifikatorer
  • Eksempel 1
  • Eksempel 2
  • Kapacitet
  • Eksempel 3

Hvornår skal man bruge en vektor?

En C ++ -vektor skal bruges under følgende omstændigheder:

  • Når man beskæftiger sig med dataelementer, der ændres konsekvent.
  • Hvis størrelsen på dataene ikke er kendt inden starten, kræver vektoren ikke, at du indstiller den maksimale størrelse på containeren.

Sådan initialiseres vektorer i C ++

Syntaksen for vektorer i C ++ er:

vector  name (items)
  • Som vist ovenfor begynder vi med vektornøgleordet.
  • Datatypen er datatypen for de elementer, der skal lagres i vektoren.
  • Navnet er navnet på vektoren eller dataelementerne.
  • Elementerne angiver antallet af elementer til vektorens data. Denne parameter er valgfri.

Iteratorer

Formålet med iteratorer er at hjælpe os med at få adgang til de elementer, der er gemt i en vektor. Det er et objekt, der fungerer som en markør. Her er de almindelige iteratorer, der understøttes af C ++ -vektorer:

  • vektor :: start (): det giver en iterator, der peger på det første element i vektoren.
  • vektor :: ende (): det giver en iterator, der peger på det sidste element i vektoren.
  • vektor :: cbegin (): det er det samme som vector :: begin (), men det har ikke evnen til at ændre elementer.
  • vektor :: cend (): det er det samme som vector :: end (), men kan ikke ændre vektorelementer.

Modifikatorer

Modifikatorer bruges til at ændre betydningen af ​​den angivne datatype. Her er de almindelige modifikatorer i C ++:

  • vektor :: push_back (): Denne modifikator skubber elementerne bagfra.
  • vector :: insert (): Til indsættelse af nye elementer til en vektor på et bestemt sted.
  • vector :: pop_back (): Denne modifikator fjerner vektorelementerne bagfra.
  • vector :: erase (): Det bruges til at fjerne en række elementer fra den angivne placering.
  • vector :: clear (): Det fjerner alle vektorelementerne.

Eksempel 1

#include #include using namespace std;int main(){vector nums;for (int a = 1; a <= 5; a++)nums.push_back(a);cout << "Output from begin and end: ";for (auto a = nums.begin(); a != nums.end(); ++a)cout << *a << " ";cout << "\nOutput from cbegin and cend: ";for (auto a = nums.cbegin(); a != nums.cend(); ++a)cout << *a << " ";return 0;}

Produktion:

Her er et screenshot af koden:

Kode Forklaring:

  1. Inkluder iostream header-filen i vores kode. Det giver os mulighed for at læse fra og skrive til konsollen.
  2. Inkluder vektoroverskriftsfilen i vores kode. Det giver os mulighed for at arbejde med vektorer i C ++.
  3. Inkluder std navneområdet for at bruge dets klasser og funktioner uden at kalde det.
  4. Ring til hovedfunktionen () inden for hvilken programmets logik skal tilføjes.
  5. {Markerer starten på kroppen af ​​hovedfunktionen ().
  6. Erklær en vektor med navnet nums for at gemme et sæt heltal.
  7. Opret en for-løkke for at hjælpe os med at gentage over vektoren. Den variable hjælper os gentage over vektorelementerne, fra 1 m til 5 th elementer.
  8. Skub elementer ind i vektoren num fra bagsiden. For hver iteration tilføjer dette den aktuelle værdi af variabel a i vektoren, som er 1 til 5.
  9. Udskriv lidt tekst på konsollen
  10. Brug en iteratorvariabel a til at gentage elementerne i vektornumre fra begyndelsen til det sidste ende-element. Bemærk, at vi bruger vektor :: start () og vektor :: slut () iteratorer.
  11. Udskriv de værdier, der peges på af iteratorvariablen a på konsollen for hver iteration.
  12. Udskriv tekst på konsollen. \ N er et nyt linjetegn, der flytter markøren til den nye linje for at udskrive derfra.
  13. Brug en iteratorvariabel til at gentage elementerne i vektornumre fra begyndelsen til det sidste ende-element. Bemærk, at vi bruger vektor :: cbegin () og vector :: cend () iteratorer.
  14. Udskriv de værdier, som iteratorvariablen a peger på på konsollen for hver iteration.
  15. Hovedfunktionen skal returnere en værdi, hvis programmet kører med succes.
  16. Slutningen af ​​hovedfunktionens () krop.

Eksempel 2

#include #include using namespace std;int main(){vector nums;nums.assign(5, 1);cout << "Vector contents: ";for (int a = 0; a < nums.size(); a++)cout << nums[a] << " ";nums.push_back(2);int n = nums.size();cout << "\nLast element: " << nums[n - 1];nums.pop_back();cout << "\nVector contents: ";for (int a = 0; a < nums.size(); a++)cout << nums[a] << " ";nums.insert(nums.begin(), 7);cout << "\nFirst element: " << nums[0];nums.clear();cout << "\nSize after clear(): " << nums.size();}

Produktion:

Her er et screenshot af koden:

Kode Forklaring:

  1. Inkluder iostream header-filen i vores kode for at bruge dens funktioner.
  2. Inkluder vektoroverskriftsfilen i vores kode for at bruge dens funktioner.
  3. Inkluder std navneområdet for at bruge dets klasser uden at kalde det.
  4. Ring til hovedfunktionen (). Programmets logik skal tilføjes inde i sin krop.
  5. Starten af ​​kroppen til hovedfunktionen ().
  6. Erklær en vektor med navnet nums for at gemme nogle heltalsværdier.
  7. Gem 5 elementer i vektornumrene. Hver med en værdi på 1.
  8. Udskriv lidt tekst på konsollen
  9. Brug en iteratorvariabel a til at gentage elementerne i vektornumre.
  10. Udskriv værdierne for vektornumre på konsollen for hver iteration.
  11. Tilføj værdien 2 til slutningen af ​​vektornumrene.
  12. Erklær en heltalsvariabel n for at gemme størrelsen på vektornumrene.
  13. Udskriv den sidste værdi af vektornumre sammen med anden tekst. Den skal returnere en 2.
  14. Fjern det sidste element fra vektornumrene. De 2 fjernes.
  15. Udskriv tekst på konsollen. \ N flytter markøren til den nye linje for at udskrive teksten der.
  16. Brug en iteratorvariabel a til at gentage elementerne i vektornumre.
  17. Udskriv værdierne for vektornumre på konsollen for hver iteration.
  18. Indsæt værdien 7 i begyndelsen af ​​vektornumrene.
  19. Udskriv den første værdi af vektornumre sammen med anden tekst. Det skal vende tilbage 7.
  20. Slet alle elementer fra vektornumrene.
  21. Udskriv størrelsen på vektornumret sammen med anden tekst, når alt indhold er ryddet. Den skal returnere 0.
  22. Slutningen af ​​hovedfunktionens () krop.

Kapacitet

Brug følgende funktioner til at bestemme kapaciteten for en vektor:

  • Størrelse () - Det returnerer antallet af elementer i en vektor.
  • Max_size () -Det returnerer det højeste antal varer, en vektor kan gemme.
  • Kapacitet () -Det returnerer mængden af ​​lagerplads, der er allokeret til en vektor.
  • Ændr størrelse () -Det ændrer størrelsen på containeren, så den indeholder n elementer. Hvis vektorens aktuelle størrelse er større end n, fjernes de bageste elementer fra vektoren. Hvis vektorens aktuelle størrelse er mindre end n, tilføjes ekstra emner på bagsiden af ​​vektoren.
  • Tom () -i t returnerer sandt, hvis en vektor er tom, ellers returnerer den falsk.

Eksempel 3

#include #include using namespace std;int main() {vector vector1;for (int x = 1; x <= 10; x++)vector1.push_back(x);cout << "Vector size: " << vector1.size()<< endl;cout << "Vector capacity: " << vector1.capacity() << endl;cout << "Maximum size of vector: " << vector1.max_size()<< endl;vector1.resize(5);cout << "Vector size after resizing: " << vector1.size() << endl;if (vector1.empty() == false)cout << "Vector is not empty"<

Produktion:

Her er et screenshot af koden:

Kode Forklaring:

  1. Inkluder iostream header-filen i vores kode for at bruge dens funktion.
  2. Inkluder vektoroverskriftsfilen i vores kode for at bruge dens funktioner.
  3. Inkluder std navneområdet i vores kode for at bruge dets klasser uden at kalde det.
  4. Ring til hovedfunktionen (). Programmets logik skal tilføjes inden for denne funktion.
  5. Opret en vektor med navnet vector1 for at gemme heltal.
  6. Brug en for-løkke til at oprette variabel x med værdier fra 1 til 10.
  7. Skub værdierne af variablen x ind i vektoren.
  8. Udskriv størrelsen på vektoren sammen med anden tekst på konsollen.
  9. Udskriv vektorens kapacitet sammen med anden tekst på konsollen.
  10. Udskriv det maksimale antal elementer, som vektoren kan rumme sammen med anden tekst på konsollen.
  11. Ændr størrelsen på vektoren, så den kun indeholder 5 elementer.
  12. Udskriv den nye størrelse på vektoren sammen med anden tekst.
  13. Kontroller, om vektoren ikke er tom.
  14. Udskriv tekst på konsollen, hvis vektoren ikke er tom.
  15. Brug en anden erklæring til at angive, hvad du skal gøre, hvis vektoren er tom.
  16. Tekst der skal udskrives på konsollen, hvis vektoren er tom.
  17. Programmet skal returnere værdi efter vellykket afslutning.
  18. Slutningen af ​​hovedfunktionsorganet ().

Resumé:

  • En C ++ -vektor er et dynamisk array, der er i stand til automatisk at ændre størrelsen på sig selv, når et element tilføjes eller slettes fra det.
  • Opbevaringen til en vektor håndteres automatisk af containeren.
  • Elementerne i en vektor lagres i sammenhængende lagring for at få adgang til dem og derefter krydses ved hjælp af iteratorer.
  • Indsættelsen af ​​nye data i en vektor sker i slutningen.
  • Indsættelsen af ​​data i en vektor tager forskellig tid.
  • Fjernelsen af ​​et element fra en vektor tager konstant tid.
  • Indsættelse eller sletning af et element i begyndelsen tager lineær tid.
  • Vektorer skal bruges, når der behandles dataelementer, der ændres konsekvent.
  • Du kan også bruge vektorer, hvis datastørrelsen ikke er kendt, inden du begynder.