Tot nu toe hebben we telkens gebruik gemaakt van losse gegeven. Wat nu als we een verzmeling van gegevens op willen slaan? Als we bijvoorbeeld de gebruiker twintig getallen in laten voeren. Moeten we dan twintig verschillende variabelen declareren? Nee, dan gebruiken we een vector.
Een vector is een rij van gegevens van hetzelfde type. De declaratie van een vector heeft een bijzonderheid.
vector<int> myRowOfIntegers;
Je ziet dat we achter het woord vector
de aanduiding
<int>
zetten. Daarmee geven we aan dat we in deze vector
gegevens van het type int
willen opslaan.
We vullen een vector door steeds een gegeven achter de bestaande
verzamelingen te plakken. Een vector is een object en bevat dus
memberfuncties. Om een gegeven aan te verzameling toe te voegen, gebruiken
we de memberfunctie push_back
.
#include <vector> using namespace std; // het programma start hier void main() { // declareer vector vector<int> myRowOfIntegers; // voeg getallen toe aan vector myRowOfIntegers.push_back(1); myRowOfIntegers.push_back(3); }
Merk op dat we de regel #include <vector>
nodig hebben
om met vectoren te kunnen werken.
We kunnen nu gegevens naar een vector schrijven, maar we willen ze
natuurlijk ook weer kunnen lezen. Hiervoor maken we gebruik van de
memberfunctie at
.
#include <iostream> #include <vector> using namespace std; // het programma start hier void main() { // declareer vector vector<int> myRowOfIntegers; // voeg getallen toe aan vector myRowOfIntegers.push_back(1); myRowOfIntegers.push_back(2); // schrijf inhoud van vector naar het scherm cout << myRowOfIntegers.at(0); cout << myRowOfIntegers.at(1); }
Denk er aan dat de elementen in een vector genummerd worden vanaf 0.
Zodra de vector groeit, is het lastig om alle elementen apart op te
vragen met de at
memberfunctie. Een handigere manier is om
gebruik te maken van een for-lus. We kunnen met de memberfunctie
size
opvragen hoeveel elementen de vector bevat en zo alle
gegevens stuk voor stuk aflopen.
#include <iostream> #include <vector> using namespace std; // het programma start hier void main() { // declareer vector vector<int> myRowOfIntegers; // voeg getallen toe aan vector myRowOfIntegers.push_back(1); myRowOfIntegers.push_back(2); // doorloop vector for (int i = 0; i < myRowOfIntegers.size(); i++) { cout << myRowOfIntegers.at(i) << endl; } }
Je kunt gegevens uit een vector verwijderen door gebruik te maken van
de memberfunctie erase
.