We kunnen een string gebruiken om meerdere characters in één variabele op te slaan. Dit is iets wat we niet alleen voor characters willen kunnen doen, maar ook voor andere datatypes.
Hiervoor kunnen we in C++ een vector gebruiken. Hieronder leggen we het gebruik van een vector uit.
Een vector is een reeks met elementen die een waarde hebben.
Om vectoren te kunnen gebruiken, moeten we de library vector toevoegen aan onze code.
Een vector maak je aan:
Een vector kan alle datatypes die we eerder zijn tegengekomen bevatten. Inclusief strings en vectoren.
In codevoorbeelden 7.1, 7.2, 7.3, 7.4 en 7.5 zie je het gebruik van een vector in C++.
Mocht het gebruik van een vector in je programma zorgen voor een compile error, controleer dan of bij je project de “C++ compiler options” op C++11 of hoger staat.
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<float> numbers = {5.3,3.2,6.4,7.1};
for(unsigned int i=0; i<numbers.size(); i++){
cout << "number " << i << " is: " << numbers[i] << "\n";
}
//output:
// number 0 is: 5.3
// number 1 is: 3.2
// number 2 is: 6.4
// number 3 is: 7.1
}
Codevoorbeeld 7.1 Een vector met floats
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> money = {5,8};
money.push_back(3); // add 3 to the end of the vector money
for(unsigned int i=0; i<money.size(); i++){
cout << "money " << i << " is: " << money[i] << "\n";
}
//output:
// money 0 is: 5
// money 1 is: 8
// money 2 is: 3
}
Codevoorbeeld 7.2 Een vector met integers
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
vector<string> colors = {"blue", "red"};
colors.push_back(string("green")); // add "green" to the vector colors
cout << colors[0] << ", " << colors[1] << ", " << colors[2] << endl;
cout << colors[0][0] << colors[0][1] << ", ";
cout << colors[1][0] << colors[1][1] << ", ";
cout << colors[2][0] << colors[2][1] << endl;
//output:
// blue, red, green
// bl, re, gr
}
Codevoorbeeld 7.3 Een vector met strings
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector< vector<int> > matrix = { {3, 99}, {32, 88} };
vector<int> row = {54, 28};
matrix.push_back(row); // add row to the vector matrix
for (unsigned int i=0; i<matrix.size(); i++){
for (unsigned int j=0; j<matrix[i].size(); j++){
cout << "(" << i << "," << j << "): " << matrix[i][j] << "\n";
}
}
//output:
// (0,0): 3
// (0,1): 99
// (1,0): 32
// (1,1): 88
// (2,0): 54
// (2,1): 28
}
Codevoorbeeld 7.4 Een vector met vectoren van integers
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<char> letters = {'A', 'B', 'C', 'D'};
letters[0] = 'Z'; // replace element 0 in letters with a 'Z'
letters.pop_back(); // remove last element
cout << "letters: ";
for(unsigned int i=0; i<letters.size(); i++){
cout << letters[i] << ", ";
}
cout << "\n";
//output:
// letters: Z, B, C,
}
Codevoorbeeld 7.5 Een vector met characters \
Het datatype vector komt samen met een aantal functies. In codevoorbeeld 7.1 zien
we size()
, push_back()
en pop_back()
. De functie size()
geeft de lengte van de de
vector terug. De functie push_back()
voegt een element toe aan het einde van de
vector. De functie pop_back()
verwijdert het laatste element.
De complete lijst met vector-functies staat op: http://en.cppreference.com/w/cpp/container/vector.
Een “gewone” integer kan zowel negatieve als positieve getallen bevatten. Een unsigned int kan enkel positieve getallen bevatten. De functie size()
in codevoorbeeld
7.1 geeft als datatype een unsigned integer terug. Als we een int met een unsigned
int gaan vergelijken, dan kan dit fout gaan bij grote of negatieve getallen. Gelukkig
is dat makkelijk te voorkomen door van de “loop control variable” (in codevoorbeeld 7.1 variabele i) een unsigned int te maken.