Vektor in C++ Standard Template Library (STL) med exempel
โก Smart sammanfattning
Vektor in C++ รคr en dynamisk array frรฅn Standard Template Library som รคndrar storlek automatiskt nรคr element lรคggs till eller tas bort, och lagrar objekt i sammanhรคngande minne sรฅ att programmerare kan komma รฅt och navigera i dem med hjรคlp av iteratorer.

Vad รคr en C++ Vektor?
A C++ Vector รคr en dynamisk array som kan รคndra storlek pรฅ sig sjรคlv automatiskt. Storleksรคndringen sker efter att ett element har lagts till eller tagits bort frรฅn vektorn. Lagringen hanteras automatiskt av containern. Elementen i en vektor lagras i angrรคnsande lagring. Detta tillรฅter C++ programmerare fรถr att komma รฅt och korsa vektorelementen med iteratorer.
Infogning av ny data i en vektor gรถrs i dess slut. Detta tar en differentiell tid. Borttagning av ett element frรฅn en vektor tar konstant tid. Anledningen รคr att det inte finns nรฅgot behov av att รคndra storlek pรฅ vektorn. Infogning eller borttagning av ett element i bรถrjan av vektorn tar linjรคr tid.
Innan man skriver kod med vektorer รคr det bra att veta nรคr de รคr rรคtt behรฅllare att gripa efter.
Nรคr ska man anvรคnda en vektor?
A C++ vektor ska anvรคndas under fรถljande omstรคndigheter:
- Nรคr man hanterar dataelement som fรถrรคndras konsekvent.
- Om datastorleken inte รคr kรคnd innan du bรถrjar, krรคver vektorn inte att du anger containerns maximala storlek.
Hur man initierar vektorer i C++
Syntaxen fรถr vektorer i C++ รคr:
vector <data-type> name (items)
Som visas ovan bรถrjar vi med nyckelordet vektor.
- Ocuco-landskapet datatyp รคr datatypen fรถr de element som ska lagras i vektorn.
- Ocuco-landskapet namn รคr namnet pรฅ vektorn eller dataelementen.
- Ocuco-landskapet artikel anger antalet element fรถr vektordata. Denna parameter รคr valfri.
Nรคr en vektor existerar ger iteratorer dig ett pekarliknande sรคtt att fรถrflytta dig mellan dess element.
iteratorer
Syftet med iteratorer รคr att hjรคlpa oss att komma รฅt elementen som lagras i en vektor. Det รคr ett objekt som fungerar som en pekare. Hรคr รคr de vanliga iteratorer som stรถds av C++ vektorer:
- vektor::bรถrja(): det ger en iterator som pekar pรฅ det fรถrsta elementet i vektorn.
- vektor::slut(): det ger en iterator som pekar pรฅ elementet fรถrbi slutet av vektorn.
- vektor::cbegin(): Det รคr samma sak som vector::begin(), men det har inte mรถjlighet att modifiera element.
- vektor::cend(): Det รคr samma sak som vector::end() men kan inte modifiera vektorelement.
Fรถljande exempel fyller en vektor och gรฅr sedan igenom den med bรฅde muterbara och konstanta iteratorer.
Exempelvis 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; }
Produktion:
Hรคr รคr en skรคrmdump av koden:
Code Fรถrklaring:
- Inkludera iostream-huvudfilen i vรฅr kod. Det gรถr att vi kan lรคsa frรฅn och skriva till konsolen.
- Inkludera vektorhuvudfilen i vรฅr kod. Det kommer att tillรฅta oss att arbeta med vektorer i C++.
- Inkludera std-namnomrรฅdet fรถr att anvรคnda dess klasser och funktioner utan att anropa det.
- Anropa funktionen main() dรคr programmets logik ska lรคggas till.
- { markerar bรถrjan pรฅ huvuddelen av funktionen main().
- Deklarera en vektor som heter nums fรถr att lagra en uppsรคttning heltal.
- Skapa en for-loop som hjรคlper oss att iterera รถver vektorn. Variabeln hjรคlper oss att iterera รถver vektorelementen, frรฅn det fรถrsta till det femte elementet.
- Tryck in element i vektornumret bakifrรฅn. Fรถr varje iteration kommer detta att lรคgga till det aktuella vรคrdet fรถr variabel a i vektorn, vilket รคr 1 till 5.
- Skriv ut lite text pรฅ konsolen.
- Anvรคnd en iteratorvariabel a fรถr att iterera รถver elementen i vektornummer frรฅn bรถrjan till elementet fรถrbi slutet. Observera att vi anvรคnder vektor::begin() och vector::end() iteratorer.
- Skriv ut vรคrdena som pekas pรฅ av iteratorvariabel a pรฅ konsolen fรถr varje iteration.
- Skriv ut lite text pรฅ konsolen. \n รคr ett nytt linjetecken som flyttar markรถren till den nya raden fรถr att skriva ut dรคrifrรฅn.
- Anvรคnd en iteratorvariabel fรถr att iterera รถver elementen i vektornumren frรฅn bรถrjan till det fรถrbi-slut-elementet. Observera att vi anvรคnder iteratorerna vector::cbegin() och vector::cend().
- Skriv ut vรคrdena som pekas pรฅ av iteratorvariabel a pรฅ konsolen fรถr varje iteration.
- Huvudfunktionen bรถr returnera ett vรคrde om programmet kรถrs framgรฅngsrikt.
- Slutet pรฅ huvuddelen av funktionen main().
modifierare
Modifierare anvรคnds fรถr att รคndra innebรถrden av den angivna datatypen. Hรคr รคr de vanliga modifierarna i C++:
- vector::push_back(): Denna modifierare skjuter elementen frรฅn baksidan.
- vektor::insert(): Fรถr att infoga nya objekt i en vektor pรฅ en angiven plats.
- vector::pop_back(): Denna modifierare tar bort vektorelementen frรฅn baksidan.
- vektor::erase(): Den anvรคnds fรถr att ta bort en rad element frรฅn den angivna platsen.
- vektor::clear(): Det tar bort alla vektorelement.
Nรคsta exempel tillรคmpar dessa modifierare i sekvens fรถr att se hur en vektor fรถrรคndras.
Exempelvis 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(); }
Produktion:
Hรคr รคr en skรคrmdump av koden:
Code Fรถrklaring:
- Inkludera iostream-huvudfilen i vรฅr kod fรถr att anvรคnda dess funktioner.
- Inkludera vektorhuvudfilen i vรฅr kod fรถr att anvรคnda dess funktioner.
- Inkludera std-namnomrรฅdet fรถr att anvรคnda dess klasser utan att anropa det.
- Anropa main()-funktionen. Programlogiken bรถr lรคggas till i dess kropp.
- Bรถrjan av huvuddelen av funktionen main().
- Deklarera en vektor som heter nums fรถr att lagra nรฅgra heltalsvรคrden.
- Lagra 5 element i vektornumren. Var och en med vรคrdet 1.
- Skriv ut lite text pรฅ konsolen.
- Anvรคnd en iteratorvariabel a fรถr att iterera รถver elementen i vektornummer.
- Skriv ut vรคrdena fรถr vektornumren pรฅ konsolen fรถr varje iteration.
- Lรคgg till vรคrdet 2 till slutet av vektornumren.
- Deklarera en heltalsvariabel n fรถr att lagra storleken pรฅ vektornumren.
- Skriv ut det sista vรคrdet av vektornumren tillsammans med annan text. Den borde ge en 2:a.
- Ta bort det sista elementet frรฅn vektornumren. De 2 kommer att tas bort.
- Skriv ut text pรฅ konsolen. \n flyttar markรถren till den nya raden fรถr att skriva ut texten dรคr.
- Anvรคnd en iteratorvariabel a fรถr att iterera รถver elementen i vektornummer.
- Skriv ut vรคrdena fรถr vektornumren pรฅ konsolen fรถr varje iteration.
- Infoga vรคrdet 7 i bรถrjan av vektornumren.
- Skriv ut det fรถrsta vรคrdet av vektornummer tillsammans med annan text. Den borde รฅterkomma 7.
- Ta bort alla element frรฅn vektornumren.
- Skriv ut storleken pรฅ vektornumret tillsammans med annan text efter att ha rensat allt innehรฅll. Det bรถr returnera 0.
- Slutet pรฅ huvuddelen av funktionen main().
Kapacitet
Anvรคnd fรถljande funktioner fรถr att bestรคmma en vektors kapacitet:
- Storlek() โ Den returnerar antalet objekt i en vektor.
- Max_size() โ Den returnerar det hรถgsta antalet objekt som en vektor kan lagra.
- Kapacitet() โ Den returnerar mรคngden lagringsutrymme som allokerats till en vektor.
- รndra storlek() โ Den รคndrar storleken pรฅ behรฅllaren sรฅ att den innehรฅller n objekt. Om vektorns nuvarande storlek รคr stรถrre รคn n, kommer de bakre objekten att tas bort frรฅn vektorn. Om vektorns nuvarande storlek รคr mindre รคn n, kommer extra objekt att lรคggas till lรคngst bak i vektorn.
- Tรถmma() โ returnerar sant om en vektor รคr tom. Annars returnerar den falskt.
Detta sista exempel rapporterar och justerar lagringen av en vektor med hjรคlp av kapacitetsfunktionerna ovan.
Exempelvis 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; }
Produktion:
Hรคr รคr en skรคrmdump av koden:
Code Fรถrklaring:
- Inkludera iostream-huvudfilen i vรฅr kod fรถr att anvรคnda dess funktion.
- Inkludera vektorhuvudfilen i vรฅr kod fรถr att anvรคnda dess funktioner.
- Inkludera std-namnomrรฅdet i vรฅr kod fรถr att anvรคnda dess klasser utan att anropa det.
- Anropa main()-funktionen. Programlogiken bรถr lรคggas till i kroppen av denna funktion.
- Skapa en vektor med namnet vektor1 fรถr att lagra heltal.
- Anvรคnd en for-loop fรถr att skapa variabel x med vรคrden frรฅn 1 till 10.
- Tryck in vรคrdena fรถr variabel x i vektorn.
- Skriv ut storleken pรฅ vektorn tillsammans med annan text pรฅ konsolen.
- Skriv ut vektorns kapacitet tillsammans med annan text pรฅ konsolen.
- Skriv ut det maximala antalet objekt som vektorn kan hรฅlla tillsammans med annan text pรฅ konsolen.
- รndra storlek pรฅ vektorn sรฅ att den bara innehรฅller 5 element.
- Skriv ut den nya storleken pรฅ vektorn tillsammans med annan text.
- Kontrollera om vektorn inte รคr tom.
- Skriv ut text pรฅ konsolen om vektorn inte รคr tom.
- Anvรคnd en else-sats fรถr att ange vad du ska gรถra om vektorn รคr tom.
- Text att skriva ut pรฅ konsolen om vektorn รคr tom.
- Programmet mรฅste returnera vรคrde efter framgรฅngsrikt slutfรถrande.
- Slutet pรฅ huvuddelen () funktion.





