Vektor i C ++ Standardmallbibliotek (STL) med exempel

Innehållsförteckning:

Anonim

Vad är en C ++ -vektor?

En C ++ VECTOR är en dynamisk matris som kan ändra storlek på sig själv automatiskt. Storleksändringen sker efter att ett element har lagts till eller raderats från vektorn. Lagringen hanteras automatiskt av behållaren. Elementen i en vektor lagras i angränsande lagring. Detta gör att C ++ - programmerare kan komma åt och korsa vektorelementen med iteratorer.

Insättningen av nya data i en vektor görs i slutet. Detta tar differentiell tid. Avlägsnandet 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. Införande eller radering av ett element i början av vektorn tar linjär tid.

I den här C ++ -handledningen lär du dig:

  • Vad är en C ++ -vektor?
  • När ska jag använda en vektor?
  • Hur man initierar vektorer i C ++
  • Iteratorer
  • Modifierare
  • Exempel 1
  • Exempel 2
  • Kapacitet
  • Exempel 3

När ska jag använda en vektor?

En C ++ -vektor ska användas under följande omständigheter:

  • När du hanterar dataelement som förändras konsekvent.
  • Om storleken på data inte är känd innan du börjar, kräver inte vektorn att du anger maximal storlek på behållaren.

Hur man initierar vektorer i C ++

Syntaxen för vektorer i C ++ är:

vector  name (items)
  • Som visas ovan börjar vi med vektornamnet.
  • 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 vektordata. Denna parameter är valfri.

Iteratorer

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

  • vector :: begin (): det ger en iterator som pekar på det första elementet i vektorn.
  • vector :: end (): det ger en iterator som pekar på elementet som är förflutet i slutet av vektorn.
  • vector :: cbegin (): det är samma som vector :: begin (), men det har inte möjlighet att ändra element.
  • vector :: cend (): det är samma som vector :: end () men kan inte ändra vektorelement.

Modifierare

Modifierare används för att ändra betydelsen av den angivna datatypen. Här är de vanligaste modifierarna i C ++:

  • vektor :: push_back (): Denna modifierare skjuter elementen från baksidan.
  • vector :: insert (): För att infoga nya objekt till en vektor på en viss plats.
  • vector :: pop_back (): Denna modifierare tar bort vektorelementen från baksidan.
  • vector :: erase (): Den används för att ta bort en rad element från den angivna platsen.
  • vector :: clear (): Det tar bort alla vektorelement.

Exempel 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:

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

Kodförklaring:

  1. Inkludera iostream-rubrikfilen 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 gör att vi kan arbeta med vektorer i C ++.
  3. Inkludera std-namnområdet för att använda dess klasser och funktioner utan att anropa det.
  4. Ring huvudfunktionen () som programlogiken ska läggas till.
  5. {Markerar början på kroppen för huvudfunktionen ().
  6. Förklara en vektor som heter nums för att lagra en uppsättning heltal.
  7. Skapa en for-loop som hjälper oss att itera över vektorn. Variabeln hjälper oss att itera över vektorelementen, från 1: a till 5: e element.
  8. Skjut in element i vektorn num från baksidan. För varje iteration lägger detta till aktuellt värde 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 itera över elementen i vektornum från början till det slutliga elementet. Observera att vi använder vector :: start () och vector :: end () iteratorer.
  11. Skriv ut värdena pekade av iteratorvariabeln på konsolen för varje iteration.
  12. Skriv ut lite text på konsolen. \ N är ett nytt radtecken som flyttar markören till den nya raden för att skriva ut därifrån.
  13. Använd en iteratorvariabel för att itera över elementen i vektornum från början till det förflutna-slutet-elementet. Observera att vi använder iteratorer för vector :: cbegin () och vector :: cend ().
  14. Skriv ut värdena pekade av iteratorvariabel a på konsolen för varje iteration.
  15. Huvudfunktionen ska returnera ett värde om programmet körs framgångsrikt.
  16. Slutet på huvudfunktionens () kropp.

Exempel 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:

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

Kodförklaring:

  1. Inkludera iostream-rubrikfilen 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 sina klasser utan att kalla det.
  4. Ring huvudfunktionen (). Programlogiken ska läggas till i sin kropp.
  5. Början av huvudfunktionen ().
  6. Förklara en vektor som heter nums för att lagra vissa heltal.
  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 itera över elementen i vektornumren.
  10. Skriv ut värdena för vektornumren på konsolen för varje iteration.
  11. Lägg till värdet 2 i slutet av vektornumren.
  12. Förklara en heltalsvariabel n för att lagra storleken på vektornumren.
  13. Skriv ut det sista värdet av vektornumren tillsammans med annan text. Den ska returnera en 2.
  14. Ta bort det sista elementet från vektornumren. De två 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 itera över elementen i vektornumren.
  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 vektornumren tillsammans med annan text. Den ska återvända 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. Den ska returnera 0.
  22. Slutet på huvudfunktionens () kropp.

Kapacitet

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

  • Storlek () - Den returnerar antalet objekt i en vektor.
  • Max_size () -Det returnerar det högsta antalet artiklar en vektor kan lagra.
  • Capacity () -Det returnerar mängden lagringsutrymme som tilldelats en vektor.
  • Ändra storlek () -Den ändrar storlek på behållaren så att den innehåller n objekt. Om vektorn nuvarande storlek är större än n, tas de bakre objekten bort från vektorn. Om vektorn nuvarande storlek är mindre än n, läggs extra objekt till på baksidan av vektorn.
  • Tom () -i t returnerar true om en vektor är tom, annars returnerar den falsk.

Exempel 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:

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

Kodförklaring:

  1. Inkludera iostream-rubrikfilen 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 sina klasser utan att kalla det.
  4. Ring huvudfunktionen (). Programlogiken bör läggas till i denna funktion.
  5. Skapa en vektor med namnet vector1 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. Skjut in värdena för variabeln x i vektorn.
  8. Skriv ut storleken på vektorn tillsammans med annan text på konsolen.
  9. Skriv ut vektorkapaciteten tillsammans med annan text på konsolen.
  10. Skriv ut det maximala antalet objekt som vektorn kan innehålla tillsammans med annan text på konsolen.
  11. Ändra storlek på vektorn så att den endast rymmer 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 ett annat uttalande för att ange vad du ska göra om vektorn är tom.
  16. Text som ska skrivas ut på konsolen om vektorn är tom.
  17. Programmet måste returnera värde när det är klart.
  18. Slutet på huvudfunktionen ().

Sammanfattning:

  • En C ++ -vektor är en dynamisk matris 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 passeras med iteratorer.
  • Insättningen av nya data i en vektor görs i slutet.
  • Insättningen av data i en vektor tar differentiell tid.
  • Avlägsnandet av ett element från en vektor tar konstant tid.
  • Införande 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.