Vektor inn C++ Standard malbibliotek (STL) med eksempel
Hva er en C++ Vektor?
A C++ vektor er en dynamisk matrise som kan endre størrelsen på seg selv automatisk. Endre størrelsen skjer etter at et element er lagt til eller slettet fra vektoren. Lagringen håndteres automatisk av containeren. Elementene i en vektor lagres i sammenhengende lagring. Dette tillater C++ programmerere for å få tilgang til og krysse vektorelementene ved hjelp av iteratorer.
Innsetting av nye data til en vektor gjøres på slutten. Dette tar en differensiell tid. Fjerning av et element fra en vektor tar konstant tid. Årsaken er at det ikke er nødvendig å endre størrelsen på vektoren. Innsetting eller sletting av et element i begynnelsen av vektoren tar lineær tid.
Når skal man bruke en vektor?
A C++ vektor bør brukes under følgende omstendigheter:
- Når du arbeider med dataelementer som endres konsekvent.
- Hvis størrelsen på dataene ikke er kjent før du begynner, vil vektoren ikke kreve at du angir maksimal størrelse på beholderen.
Hvordan initialisere vektorer i C++
Syntaksen til vektorer i C++ er:
vector <data-type> name (items)
- Som vist ovenfor begynner vi med vektornøkkelordet.
- Datatypen er datatypen til elementene som skal lagres i vektoren.
- Navnet er navnet på vektoren eller dataelementene.
- Elementene angir antall elementer for vektorens data. Denne parameteren er valgfri.
Iteratorer
Hensikten med iteratorer er å hjelpe oss med å få tilgang til elementene som er lagret i en vektor. Det er et objekt som fungerer som en peker. Her er de vanlige iteratorene som støttes av C++ vektorer:
- vektor:: begynne(): det gir en iterator som peker på det første elementet i vektoren.
- vektor:: end(): det gir en iterator som peker på elementet forbi slutten av vektoren.
- vektor::cbegin(): det er det samme som vector::begin(), men det har ikke muligheten til å endre elementer.
- vektor::cend(): det er det samme som vector::end(), men kan ikke endre vektorelementer.
Modifikatorer
Modifikatorer brukes for å endre betydningen av den angitte datatypen. Her er de vanlige modifikatorene i C++:
- vektor::push_back(): Denne modifikatoren skyver elementene fra baksiden.
- vektor::sett inn(): For å sette inn nye elementer i en vektor på et spesifisert sted.
- vektor::pop_back(): Denne modifikatoren fjerner vektorelementene fra baksiden.
- vektor::slett(): Den brukes til å fjerne en rekke elementer fra den angitte plasseringen.
- vektor::clear(): Den fjerner alle vektorelementene.
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; }
Utgang:
Her er et skjermbilde av koden:
Kodeforklaring:
- Inkluder iostream-headerfilen i koden vår. Det vil tillate oss å lese fra og skrive til konsollen.
- Inkluder vektoroverskriftsfilen i koden vår. Det vil tillate oss å jobbe med vektorer i C++.
- Inkluder std-navneområdet for å bruke dets klasser og funksjoner uten å kalle det.
- Kalle hoved()-funksjonen som logikken til programmet skal legges til.
- { markerer starten på hoveddelen av hoved()-funksjonen.
- Deklarer en vektor kalt nums for å lagre et sett med heltall.
- Lag en for-løkke for å hjelpe oss med å iterere over vektoren. Variabelen vil hjelpe oss å iterere over vektorelementene, fra 1st til 5th elementer.
- Skyv elementer inn i vektornummeret fra baksiden. For hver iterasjon vil dette legge til gjeldende verdi av variabel a inn i vektoren, som er 1 til 5.
- Skriv ut litt tekst på konsollen
- Bruk en iteratorvariabel a for å iterere over elementene i vektornumre fra begynnelsen til elementet forbi slutten. Merk at vi bruker vektor::begin() og vector::end() iteratorer.
- Skriv ut verdiene pekt på av iteratorvariabel an på konsollen for hver iterasjon.
- Skriv ut litt tekst på konsollen. \n er et nytt linjetegn som flytter markøren til den nye linjen for å skrive ut derfra.
- Bruk en iteratorvariabel for å iterere over elementene i vektornumre fra begynnelsen til elementet forbi slutten. Merk at vi bruker vektor::cbegin() og vector::cend() iteratorer.
- Skriv ut verdiene pekt på av iteratorvariabel a på konsollen for hver iterasjon.
- Hovedfunksjonen skal returnere en verdi hvis programmet kjører vellykket.
- Slutten av hoveddelen av hoved()-funksjonen.
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(); }
Utgang:
Her er et skjermbilde av koden:
Kodeforklaring:
- Inkluder iostream-headerfilen i koden vår for å bruke funksjonene.
- Inkluder vektoroverskriftsfilen i koden vår for å bruke den funksjoner.
- Inkluder std-navneområdet for å bruke klassene uten å kalle det.
- Kalle hoved()-funksjonen. Programlogikken bør legges til inne i kroppen.
- Starten på hoveddelen av hoved()-funksjonen.
- Deklarer en vektor kalt nums for å lagre noen heltallsverdier.
- Lagre 5 elementer i vektortallene. Hver med en verdi på 1.
- Skriv ut litt tekst på konsollen
- Bruk en iteratorvariabel a for å iterere over elementene i vektortall.
- Skriv ut verdiene til vektornumre på konsollen for hver iterasjon.
- Legg til verdien 2 til slutten av vektortallene.
- Deklarer en heltallsvariabel n for å lagre størrelsen på vektortallene.
- Skriv ut den siste verdien av vektortall sammen med annen tekst. Den skal returnere en 2.
- Fjern det siste elementet fra vektortallene. De 2 vil bli fjernet.
- Skriv ut tekst på konsollen. \n flytter markøren til den nye linjen for å skrive ut teksten der.
- Bruk en iteratorvariabel a for å iterere over elementene i vektortall.
- Skriv ut verdiene til vektornumre på konsollen for hver iterasjon.
- Sett inn verdien 7 til begynnelsen av vektortallene.
- Skriv ut den første verdien av vektortall sammen med annen tekst. Den skal returnere 7.
- Slett alle elementer fra vektornumrene.
- Skriv ut størrelsen på vektornummeret sammen med annen tekst etter å ha fjernet alt innhold. Den skal returnere 0.
- Slutten av hoveddelen av hoved()-funksjonen.
Kapasitet
Bruk følgende funksjoner for å bestemme kapasiteten til en vektor:
- Størrelse() –Den returnerer antall elementer i en vektor.
- Maks_størrelse() -Den returnerer det høyeste antallet varer en vektor kan lagre.
- Kapasitet () –It returnerer mengden lagringsplass som er allokert til en vektor.
- Endre størrelse () –It endrer størrelsen på beholderen til å inneholde n elementer. Hvis vektorens nåværende størrelse er større enn n, vil de bakerste elementene bli fjernet fra vektoren. Hvis vektorens gjeldende størrelse er mindre enn n, vil ekstra elementer bli lagt til bak på vektoren.
- Tom () –it returnerer sant hvis en vektor er tom. Ellers returnerer den 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; }
Utgang:
Her er et skjermbilde av koden:
Kodeforklaring:
- Inkluder iostream-headerfilen i koden vår for å bruke funksjonen.
- Inkluder vektoroverskriftsfilen i koden vår for å bruke funksjonene.
- Inkluder std-navneområdet i koden vår for å bruke klassene uten å kalle det.
- Kalle hoved()-funksjonen. Programlogikken skal legges til i hoveddelen av denne funksjonen.
- Lag en vektor kalt vektor1 for å lagre heltall.
- Bruk en for-løkke for å lage variabel x med verdier fra 1 til 10.
- Skyv verdiene til variabel x inn i vektoren.
- Skriv ut størrelsen på vektoren sammen med annen tekst på konsollen.
- Skriv ut kapasiteten til vektoren sammen med annen tekst på konsollen.
- Skriv ut det maksimale antallet elementer vektoren kan holde sammen med annen tekst på konsollen.
- Endre størrelsen på vektoren for å inneholde bare 5 elementer.
- Skriv ut den nye størrelsen på vektoren sammen med annen tekst.
- Sjekk om vektoren ikke er tom.
- Skriv ut tekst på konsollen hvis vektoren ikke er tom.
- Bruk en else-setning for å angi hva du skal gjøre hvis vektoren er tom.
- Tekst som skal skrives ut på konsollen hvis vektoren er tom.
- Programmet må returnere verdi ved vellykket gjennomføring.
- Slutten av hoved()-funksjonens hoveddel.
Oppsummering
- A C++ vektor er en dynamisk matrise som kan endre størrelsen på seg selv automatisk når et element legges til eller slettes fra det.
- Lagringen for en vektor håndteres automatisk av containeren.
- Elementene i en vektor lagres i sammenhengende lagring for å få tilgang og deretter krysses ved hjelp av iteratorer.
- Innsetting av nye data i en vektor gjøres på slutten.
- Innsetting av data i en vektor tar en differensiell tid.
- Fjerning av et element fra en vektor tar konstant tid.
- Innsetting eller sletting av et element i begynnelsen tar lineær tid.
- Vektorer bør brukes når man arbeider med dataelementer som endres konsekvent.
- Du kan også bruke vektorer hvis størrelsen på dataene ikke er kjent før du begynner.