Vektor i C++ Standard skabelonbibliotek (STL) med eksempel
Hvad er en C++ Vektor?
A C++ vektor er et dynamisk array, der er i stand til automatisk at ændre størrelsen på sig selv. Ændringen af størrelsen sker efter et element er blevet tilføjet eller slettet fra vektoren. Opbevaringen håndteres automatisk af containeren. Elementerne i en vektor lagres i sammenhængende lager. Dette tillader C++ programmører til at få adgang til og krydse vektorelementerne ved hjælp af iteratorer.
Indsættelsen af nye data til en vektor sker ved dens slutning. Dette tager en differentiel tid. Fjernelse 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.
Hvornår skal man bruge en vektor?
A C++ vektor skal bruges under følgende omstændigheder:
- Når man beskæftiger sig med dataelementer, der ændrer sig konsekvent.
- Hvis størrelsen af dataene ikke er kendt før start, vil vektoren ikke kræve, at du indstiller den maksimale størrelse på beholderen.
Sådan initialiseres vektorer i C++
Syntaksen af vektorer i C++ er:
vector <data-type> 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 for 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 pointer. 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:: end(): det giver en iterator, der peger på elementet forbi slutningen af vektoren.
- vektor::cbegin(): det er det samme som vector::begin(), men det har ikke mulighed for at ændre elementer.
- vektor::cend(): det er det samme som vector::end(), men kan ikke ændre vektorelementer.
modifiers
Modifikatorer bruges til at ændre betydningen af den angivne datatype. Her er de almindelige modifikatorer i C++:
- vektor::push_back(): Denne modifikator skubber elementerne fra bagsiden.
- vektor::indsæt(): Til indsættelse af nye elementer i en vektor på et bestemt sted.
- vektor::pop_back(): Denne modifikator fjerner vektorelementerne fra bagsiden.
- vektor::slet(): Det bruges til at fjerne en række elementer fra den angivne placering.
- vektor::clear(): Det fjerner alle vektorelementerne.
Eksempel 1
#include <iostream> #include <vector> using namespace std; int main() { vector<int> 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; }
Output:
Her er et skærmbillede af koden:
Kodeforklaring:
- Inkluder iostream-header-filen i vores kode. Det giver os mulighed for at læse fra og skrive til konsollen.
- Inkluder vektorheader-filen i vores kode. Det vil give os mulighed for at arbejde med vektorer i C++.
- Inkluder std-navnerummet for at bruge dets klasser og funktioner uden at kalde det.
- Kald funktionen main() hvori programmets logik skal tilføjes.
- { markerer starten på hoveddelen af funktionen main().
- Erklær en vektor ved navn nums for at gemme et sæt heltal.
- Opret en for-løkke for at hjælpe os med at iterere over vektoren. Variablen hjælper os med at iterere over vektorelementerne fra 1st til 5th elementer.
- Skub elementer ind i vektornummeret bagfra. For hver iteration vil dette tilføje den aktuelle værdi af variabel a til vektoren, som er 1 til 5.
- Udskriv noget tekst på konsollen
- Brug en iteratorvariabel a til at iterere over elementerne i vektornumre fra begyndelsen til elementet forbi slutningen. Bemærk, at vi bruger vector::begin() og vector::end() iteratorer.
- Udskriv de værdier, der peges på af iteratorvariabel an på konsollen for hver iteration.
- Udskriv noget tekst på konsollen. \n er et nyt linjetegn, der flytter markøren til den nye linje for at udskrive derfra.
- Brug en iteratorvariabel til at iterere over elementerne i vektornumre fra begyndelsen til elementet forbi slutningen. Bemærk, at vi bruger vector::cbegin() og vector::cend() iteratorer.
- Udskriv de værdier, der peges på af iteratorvariabel a på konsollen for hver iteration.
- Hovedfunktionen skal returnere en værdi, hvis programmet kører korrekt.
- Slutningen af hoveddelen af funktionen main().
Eksempel 2
#include <iostream> #include <vector> using namespace std; int main() { vector<int> 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(); }
Output:
Her er et skærmbillede af koden:
Kodeforklaring:
- Inkluder iostream-headerfilen i vores kode for at bruge dens funktioner.
- Inkluder vektorheader-filen i vores kode for at bruge dens funktioner.
- Inkluder std-navneområdet for at bruge dets klasser uden at kalde det.
- Kald funktionen main(). Programlogikken skal tilføjes inde i dens krop.
- Starten på hoveddelen af funktionen main().
- Deklarer en vektor ved navn nums for at gemme nogle heltalsværdier.
- Gem 5 elementer i vektornumrene. Hver med en værdi på 1.
- Udskriv noget tekst på konsollen
- Brug en iteratorvariabel a til at iterere over elementerne i vektornumre.
- Udskriv værdierne af vektornumre på konsollen for hver iteration.
- Tilføj værdien 2 til slutningen af vektortallene.
- Deklarer en heltalsvariabel n for at gemme størrelsen af vektortallene.
- Udskriv den sidste værdi af vektornumre sammen med anden tekst. Det burde returnere en 2.
- Fjern det sidste element fra vektornumrene. De 2 vil blive fjernet.
- Udskriv tekst på konsollen. \n flytter markøren til den nye linje for at udskrive teksten der.
- Brug en iteratorvariabel a til at iterere over elementerne i vektornumre.
- Udskriv værdierne af vektornumre på konsollen for hver iteration.
- Indsæt værdien 7 i begyndelsen af vektortallene.
- Udskriv den første værdi af vektornumre sammen med anden tekst. Den skulle vende tilbage 7.
- Slet alle elementer fra vektornumrene.
- Udskriv størrelsen af vektornummeret sammen med anden tekst efter at have ryddet alt indhold. Det burde returnere 0.
- Slutningen af hoveddelen af funktionen main().
Kapacitet
Brug følgende funktioner til at bestemme kapaciteten af en vektor:
- Størrelse() –Det returnerer antallet af elementer i en vektor.
- Max_size() -Det returnerer det højeste antal elementer, en vektor kan gemme.
- Kapacitet () –It returnerer mængden af lagerplads, der er allokeret til en vektor.
- Ændre størrelse () – Det ændrer størrelsen på beholderen til at indeholde n elementer. Hvis vektorens nuværende størrelse er større end n, vil de bagerste elementer blive fjernet fra vektoren. Hvis vektorens aktuelle størrelse er mindre end n, vil der blive tilføjet ekstra elementer bag på vektoren.
- Tom () –it returnerer sand, hvis en vektor er tom. Ellers returnerer det falsk.
Eksempel 3
#include <iostream> #include <vector> using namespace std; int main() { vector<int> 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"<<endl; else cout << "Vector is empty"<<endl; return 0; }
Output:
Her er et skærmbillede af koden:
Kodeforklaring:
- Inkluder iostream-headerfilen i vores kode for at bruge dens funktion.
- Inkluder vektorhovedfilen i vores kode for at bruge dens funktioner.
- Inkluder std-navneområdet i vores kode for at bruge dets klasser uden at kalde det.
- Kald funktionen main(). Programlogikken skal tilføjes i denne funktions brødtekst.
- Opret en vektor ved navn vektor1 for at gemme heltal.
- Brug en for-løkke til at oprette variabel x med værdier fra 1 til 10.
- Skub værdierne af variabel x ind i vektoren.
- Udskriv størrelsen af vektoren sammen med anden tekst på konsollen.
- Udskriv vektorens kapacitet sammen med anden tekst på konsollen.
- Udskriv det maksimale antal elementer, vektoren kan indeholde sammen med anden tekst på konsollen.
- Tilpas størrelsen på vektoren til kun at indeholde 5 elementer.
- Udskriv den nye størrelse af vektoren sammen med anden tekst.
- Kontroller, om vektoren ikke er tom.
- Udskriv tekst på konsollen, hvis vektoren ikke er tom.
- Brug en else-sætning til at angive, hvad du skal gøre, hvis vektoren er tom.
- Tekst, der skal udskrives på konsollen, hvis vektoren er tom.
- Programmet skal returnere værdi efter vellykket afslutning.
- Slutningen af hoved() funktionsteksten.
Resumé
- A C++ vektor er et dynamisk array, der automatisk kan ændre størrelsen på sig selv, når et element tilføjes eller slettes fra det.
- Lageret for en vektor håndteres automatisk af containeren.
- Elementerne i en vektor lagres i sammenhængende lager for at få adgang til dem og derefter gennemløbes ved hjælp af iteratorer.
- Indsættelsen af nye data i en vektor sker ved dens slutning.
- Indsættelsen af data i en vektor tager en differentiel tid.
- Fjernelse af et element fra en vektor tager konstant tid.
- Indsættelse eller sletning af et element i begyndelsen tager lineær tid.
- Vektorer bør bruges, når der håndteres dataelementer, der ændrer sig konsekvent.
- Du kan også bruge vektorer, hvis størrelsen af dataene ikke er kendt, før du begynder.