Vector-in C++ Standaardsjabloonbibliotheek (STL) met voorbeeld
Wat is een C++ Vector?
A C++ vector is een dynamische array die zichzelf automatisch kan vergroten of verkleinen. Het formaat wijzigen vindt plaats nadat een element is toegevoegd aan of verwijderd uit de vector. De opslag wordt automatisch door de container afgehandeld. De elementen van een vector worden in aaneengesloten opslag opgeslagen. Dit maakt het mogelijk C++ programmeurs om toegang te krijgen tot de vectorelementen en deze te doorlopen met behulp van iteratoren.
Het invoegen van nieuwe gegevens in een vector gebeurt aan het einde ervan. Dit vergt een differentiële tijd. Het verwijderen van een element uit een vector kost constante tijd. De reden is dat het niet nodig is om de grootte van de vector te wijzigen. Het invoegen of verwijderen van een element aan het begin van de vector kost lineaire tijd.
Wanneer gebruik je een vector?
A C++ vector moet worden gebruikt onder de volgende omstandigheden:
- Bij het omgaan met data-elementen die consistent veranderen.
- Als de grootte van de gegevens niet bekend is voordat u begint, hoeft u voor de vector niet de maximale grootte van de container in te stellen.
Hoe vectoren te initialiseren in C++
De syntaxis van vectoren in C++ is:
vector <data-type> name (items)
- Zoals hierboven weergegeven, beginnen we met het vectortrefwoord.
- Het datatype is het datatype van de elementen die in de vector moeten worden opgeslagen.
- De naam is de naam van de vector of de gegevenselementen.
- De items geven het aantal elementen voor de vectorgegevens aan. Deze parameter is optioneel.
Iteratoren
Het doel van iterators is om ons te helpen toegang te krijgen tot de elementen die in een vector zijn opgeslagen. Het is een object dat werkt als een aanwijzer. Hier volgen de algemene iterators die worden ondersteund door C++ vectoren:
- vector:: begin(): het geeft een iterator die naar het eerste element van de vector verwijst.
- vector:: einde(): het geeft een iterator die verwijst naar het voorbij-het-eind-element van de vector.
- vector::cbegin(): het is hetzelfde als vector::begin(), maar het heeft niet de mogelijkheid om elementen te wijzigen.
- vector::cend(): het is hetzelfde als vector::end() maar kan vectorelementen niet wijzigen.
modifiers
Modifiers worden gebruikt om de betekenis van het opgegeven gegevenstype te wijzigen. Hier zijn de gebruikelijke modifiers in C++:
- vector::push_back(): Deze modifier duwt de elementen vanaf de achterkant.
- vector::insert(): Voor het invoegen van nieuwe items in een vector op een opgegeven locatie.
- vector::pop_back(): Deze modifier verwijdert de vectorelementen van de achterkant.
- vector::wissen(): Het wordt gebruikt voor het verwijderen van een reeks elementen van de opgegeven locatie.
- vector::clear(): Het verwijdert alle vectorelementen.
Voorbeeld 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:
Hier is een screenshot van de code:
Code Verklaring:
- Neem het iostream-headerbestand op in onze code. Hiermee kunnen we lezen van en schrijven naar de console.
- Neem het vectorheaderbestand op in onze code. Het zal ons in staat stellen om met vectoren te werken C++.
- Neem de std-naamruimte op om de klassen en functies ervan te gebruiken zonder deze aan te roepen.
- Roep de functie main() aan waarbinnen de logica van het programma moet worden toegevoegd.
- De { markeert het begin van de hoofdtekst van de functie main().
- Declareer een vector met de naam nums om een reeks gehele getallen op te slaan.
- Maak een for-lus om ons te helpen de vector te herhalen. De variabele helpt ons bij het herhalen van de vectorelementen, vanaf 1st naar 5th elementen.
- Duw elementen vanaf de achterkant in de vectornum. Voor elke iteratie wordt hierdoor de huidige waarde van variabele a toegevoegd aan de vector, namelijk 1 tot 5.
- Druk wat tekst af op de console
- Gebruik een iteratorvariabele a om de elementen van vector nums te herhalen, van het begin tot het voorbij-het-eind-element. Merk op dat we vector::begin() en vector::end() iterators gebruiken.
- Druk voor elke iteratie de waarden af waarnaar de iteratorvariabele an op de console verwijst.
- Druk wat tekst af op de console. De \n is een teken voor een nieuwe regel, waarbij de cursor naar de nieuwe regel wordt verplaatst om vanaf daar af te drukken.
- Gebruik een iteratorvariabele om de elementen van vectornums te herhalen, van het begin tot het voorbij-het-eind-element. Merk op dat we vector::cbegin() en vector::cend() iterators gebruiken.
- Druk voor elke iteratie de waarden af waarnaar iteratorvariabele a op de console verwijst.
- De hoofdfunctie moet een waarde retourneren als het programma succesvol wordt uitgevoerd.
- Einde van de hoofdtekst van de functie main().
Voorbeeld 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:
Hier is een screenshot van de code:
Code Verklaring:
- Neem het iostream-headerbestand op in onze code om de functies ervan te gebruiken.
- Neem het vectorheaderbestand op in onze code om het te gebruiken functies.
- Neem de std-naamruimte op om de klassen ervan te gebruiken zonder deze aan te roepen.
- Roep de functie main() aan. De programmalogica moet in de hoofdtekst worden toegevoegd.
- Het begin van de hoofdtekst van de functie main().
- Declareer een vector met de naam nums om enkele gehele waarden op te slaan.
- Bewaar 5 elementen in de vectornums. Elk met een waarde van 1.
- Druk wat tekst af op de console
- Gebruik een iteratorvariabele a om de elementen van vectornums te herhalen.
- Druk voor elke iteratie de waarden van vectorgetallen op de console af.
- Voeg de waarde 2 toe aan het einde van de vectornums.
- Declareer een geheel getalvariabele n om de grootte van de vectornums op te slaan.
- Druk de laatste waarde van vectorgetallen af naast andere tekst. Het zou een 2 moeten opleveren.
- Verwijder het laatste element uit de vectornums. De 2 worden verwijderd.
- Tekst afdrukken op de console. De \n verplaatst de cursor naar de nieuwe regel om de tekst daar af te drukken.
- Gebruik een iteratorvariabele a om de elementen van vectornums te herhalen.
- Druk voor elke iteratie de waarden van vectorgetallen op de console af.
- Voeg de waarde 7 in aan het begin van de vectornums.
- Druk de eerste waarde van vectornums af naast andere tekst. Het zou 7 moeten retourneren.
- Verwijder alle elementen uit de vectornums.
- Druk de grootte van het vectorgetal af naast andere tekst nadat u alle inhoud hebt gewist. Het zou 0 moeten retourneren.
- Einde van de hoofdtekst van de functie main().
Inhoud
Gebruik de volgende functies om de capaciteit van een vector te bepalen:
- Maat() -Het retourneert het aantal items in een vector.
- Max_grootte() -Het retourneert het hoogste aantal items dat een vector kan opslaan.
- Capaciteit () –Het retourneert de hoeveelheid opslagruimte die aan een vector is toegewezen.
- Formaat wijzigen () –It past de grootte van de container aan zodat deze n items bevat. Als de huidige grootte van de vector groter is dan n, worden de achterste items uit de vector verwijderd. Als de huidige grootte van de vector kleiner is dan n, worden extra items aan de achterkant van de vector toegevoegd.
- Leeg () –it retourneert waar als een vector leeg is. Anders retourneert het false.
Voorbeeld 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:
Hier is een screenshot van de code:
Code Verklaring:
- Neem het iostream-headerbestand op in onze code om de functie ervan te gebruiken.
- Neem het vectorheaderbestand op in onze code om de functies ervan te gebruiken.
- Neem de std-naamruimte op in onze code om de klassen ervan te gebruiken zonder deze aan te roepen.
- Roep de functie main() aan. De programmalogica moet worden toegevoegd aan de hoofdtekst van deze functie.
- Maak een vector met de naam vector1 om gehele getallen op te slaan.
- Gebruik een for-lus om variabele x te maken met waarden van 1 tot 10.
- Duw de waarden van variabele x in de vector.
- Druk de grootte van de vector af samen met andere tekst op de console.
- Druk de capaciteit van de vector af samen met andere tekst op de console.
- Druk het maximale aantal items af dat de vector naast andere tekst op de console kan bevatten.
- Verklein de vector zodat deze slechts 5 elementen bevat.
- Druk het nieuwe formaat van de vector af naast andere tekst.
- Controleer of de vector niet leeg is.
- Druk tekst af op de console als de vector niet leeg is.
- Gebruik een else-instructie om aan te geven wat er moet gebeuren als de vector leeg is.
- Tekst die op de console moet worden afgedrukt als de vector leeg is.
- Het programma moet waarde retourneren na succesvolle voltooiing.
- Einde van de hoofdtekst van de functie main().
Samenvatting
- A C++ vector is een dynamische array die zichzelf automatisch kan vergroten of verkleinen wanneer er een element aan wordt toegevoegd of verwijderd.
- De opslag voor een vector wordt automatisch afgehandeld door de container.
- De elementen van een vector worden opgeslagen in aaneengesloten opslag zodat ze toegankelijk zijn en vervolgens kunnen worden doorlopen met behulp van iteratoren.
- Het invoegen van nieuwe gegevens in een vector gebeurt aan het einde ervan.
- Het invoegen van gegevens in een vector duurt een differentiële tijd.
- Het verwijderen van een element uit een vector kost constante tijd.
- Het invoegen of verwijderen van een element aan het begin kost lineaire tijd.
- Er moeten vectoren worden gebruikt bij het omgaan met gegevenselementen die consistent veranderen.
- U kunt ook vectoren gebruiken als de grootte van de gegevens niet bekend is voordat u begint.