Vektor in C++ Standard Template Library (STL) med exempel

Vad är en C++ Vektor?

A C++ vektor ä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.

Infogningen av ny data till en vektor görs i slutet. Detta tar en differentiell tid. Att ta bort ett element från en vektor tar konstant tid. Anledningen är att det inte finns något behov av att ändra storlek på vektorn. Insättning eller radering av ett element i början av vektorn tar linjär tid.

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 storleken på data inte är känd innan du börjar, kommer vektorn inte att kräva att du ställer in den maximala storleken på behållaren.

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.
  • Datatypen är datatypen för de element som ska lagras i vektorn.
  • Namnet är namnet på vektorn eller dataelementen.
  • Objekten anger antalet element för vektorns data. Denna parameter är valfri.

iteratorer

Syftet med iteratorer är att hjälpa oss komma åt de element som är lagrade i en vektor. Det är ett objekt som fungerar som en pekare. Här är de vanliga iteratorerna som stöds av C++ vektorer:

  • vektor:: start(): det ger en iterator som pekar på det första elementet i vektorn.
  • vektor:: end(): 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 förmågan att modifiera element.
  • vektor::cend(): det är samma som vector::end() men kan inte modifiera vektorelement.

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.

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:

modifierare

Här är en skärmdump av koden:

modifierare

Kodförklaring:

  1. Inkludera iostream-huvudfilen i vår kod. Det gör att vi kan läsa från och skriva till konsolen.
  2. Inkludera vektorhuvudfilen i vår kod. Det kommer att tillåta oss att arbeta med vektorer i C++.
  3. Inkludera std-namnområdet för att använda dess klasser och funktioner utan att anropa det.
  4. Anropa funktionen main() där programmets logik ska läggas till.
  5. { markerar början på huvuddelen av funktionen main().
  6. Deklarera en vektor som heter nums för att lagra en uppsättning heltal.
  7. Skapa en for-loop för att hjälpa oss att iterera över vektorn. Variabeln hjälper oss att iterera över vektorelementen, från 1st till 5th element.
  8. 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.
  9. Skriv ut lite text på konsolen
  10. 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.
  11. Skriv ut värdena som pekas på av iteratorvariabel an på konsolen för varje iteration.
  12. 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.
  13. Använd en iteratorvariabel för att iterera över elementen i vektornummer från början till elementet förbi slutet. Observera att vi använder vector::cbegin() och vector::cend() iteratorer.
  14. Skriv ut värdena som pekas på av iteratorvariabel a på konsolen för varje iteration.
  15. Huvudfunktionen bör returnera ett värde om programmet körs framgångsrikt.
  16. Slutet på huvuddelen av funktionen main().

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:

modifierare

Här är en skärmdump av koden:

modifierare

Kodförklaring:

  1. Inkludera iostream-huvudfilen i vår kod för att använda dess funktioner.
  2. Inkludera vektorhuvudfilen i vår kod för att använda dess funktioner.
  3. Inkludera std-namnområdet för att använda dess klasser utan att anropa det.
  4. Anropa main()-funktionen. Programlogiken bör läggas till i dess kropp.
  5. Början av huvuddelen av funktionen main().
  6. Deklarera en vektor som heter nums för att lagra några heltalsvärden.
  7. Lagra 5 element i vektornumren. Var och en med värdet 1.
  8. Skriv ut lite text på konsolen
  9. Använd en iteratorvariabel a för att iterera över elementen i vektornummer.
  10. Skriv ut värdena för vektornumren på konsolen för varje iteration.
  11. Lägg till värdet 2 till slutet av vektornumren.
  12. Deklarera en heltalsvariabel n för att lagra storleken på vektornumren.
  13. Skriv ut det sista värdet av vektornumren tillsammans med annan text. Den borde ge en 2:a.
  14. Ta bort det sista elementet från vektornumren. De 2 kommer att tas bort.
  15. Skriv ut text på konsolen. \n flyttar markören till den nya raden för att skriva ut texten där.
  16. Använd en iteratorvariabel a för att iterera över elementen i vektornummer.
  17. Skriv ut värdena för vektornumren på konsolen för varje iteration.
  18. Infoga värdet 7 i början av vektornumren.
  19. Skriv ut det första värdet av vektornummer tillsammans med annan text. Den borde återkomma 7.
  20. Ta bort alla element från vektornumren.
  21. Skriv ut storleken på vektornumret tillsammans med annan text efter att ha rensat allt innehåll. Det bör returnera 0.
  22. Slutet på huvuddelen av funktionen main().

Kapacitet

Använd följande funktioner för att bestämma kapaciteten hos en vektor:

  • Storlek() –Det returnerar antalet objekt i en vektor.
  • Max_size() -Den returnerar det högsta antalet föremål som en vektor kan lagra.
  • Kapacitet () –Det returnerar mängden lagringsutrymme som allokerats till en vektor.
  • Ändra storlek () – Det ändrar storlek 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 baktill på vektorn.
  • Tom () –it returnerar sant om en vektor är tom. Annars returnerar det falskt.

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:

Kapacitet

Här är en skärmdump av koden:

Kapacitet

Kodförklaring:

  1. Inkludera iostream-huvudfilen i vår kod för att använda dess funktion.
  2. Inkludera vektorhuvudfilen i vår kod för att använda dess funktioner.
  3. Inkludera std-namnområdet i vår kod för att använda dess klasser utan att anropa det.
  4. Anropa main()-funktionen. Programlogiken bör läggas till i kroppen av denna funktion.
  5. Skapa en vektor med namnet vektor1 för att lagra heltal.
  6. Använd en for-loop för att skapa variabel x med värden från 1 till 10.
  7. Tryck in värdena för variabel x i vektorn.
  8. Skriv ut storleken på vektorn tillsammans med annan text på konsolen.
  9. Skriv ut vektorns kapacitet tillsammans med annan text på konsolen.
  10. Skriv ut det maximala antalet objekt som vektorn kan hålla tillsammans med annan text på konsolen.
  11. Ändra storlek på vektorn så att den bara innehåller 5 element.
  12. Skriv ut den nya storleken på vektorn tillsammans med annan text.
  13. Kontrollera om vektorn inte är tom.
  14. Skriv ut text på konsolen om vektorn inte är tom.
  15. Använd en else-sats för att ange vad du ska göra om vektorn är tom.
  16. Text att skriva ut på konsolen om vektorn är tom.
  17. Programmet måste returnera värde efter framgångsrikt slutförande.
  18. Slutet på huvuddelen () funktion.

Sammanfattning

  • A C++ vektor är en dynamisk array som automatiskt kan ändra storlek på sig själv när ett element läggs till eller tas bort från det.
  • Lagringen för en vektor hanteras automatiskt av behållaren.
  • Elementen i en vektor lagras i angränsande lagring för att nås och sedan korsas med iteratorer.
  • Infogningen av ny data i en vektor görs i slutet.
  • Infogningen av data i en vektor tar en differentiell tid.
  • Att ta bort ett element från en vektor tar konstant tid.
  • Insättning eller radering av ett element i början tar linjär tid.
  • Vektorer bör användas när man hanterar dataelement som ändras konsekvent.
  • Du kan också använda vektorer om storleken på data inte är känd innan du börjar.