Vectors in C++
std::vector are usually not called vectors, often array links or dynamic arrays. Usually, you do not to provide a length to the vector - you can add elements and it will resize under the hood, as inside of the container a new array is created on each resize.
First of all, you need to include the container:
#include <vector>Creating a vector
Section titled “Creating a vector”std::vector<int> numbers;Primitive types can be passed to the vector as the type.
Adding data to the vector:
Section titled “Adding data to the vector:”numbers.push_back(1);numbers.push_back(2);Iterating over the vector:
Section titled “Iterating over the vector:”one can iterate over it with an for loop, as we can get the number of the elements in the vector:
for (int i = 0; i < numbers.size(); i++) cout << numbers[i] << endl;
// or:
for (int number : numbers) cout << number << endl;Cleaning the whole vector:
Section titled “Cleaning the whole vector:”numbers.clear();Returning a vector
Section titled “Returning a vector”vector<int> returnVector() { vector<int> values;
return values;}With assigning the value to another vector:
vector<int> returnNumbers() { vector<int> numbers; numbers.push_back(1); numbers.push_back(2);
return numbers;};
int main() { vector<int> newNumbers = returnNumbers();
cout << newNumbers[0] << endl; // prints "1" return 0;}Passing a vector to a function
Section titled “Passing a vector to a function”There are two ways to do so:
- Passing by value
- Passing by reference
When passing by value, inside of the recievings function scope, a copy is created:
void printFirstNumber(vector<int> numbers) { cout << numbers[0] << endl;};
int main() {
vector<int> numbers;
numbers.push_back(1); numbers.push_back(2); numbers.push_back(3);
printFirstNumber(numbers);
return 0;}When passing by reference, we can mutate the original state:
void changeFirstNumber(vector<int> &numbers) { numbers[0] = 2;};
int main() { // vector<int> numbers; vector<int> numbers; numbers.push_back(1);
changeFirstNumber(numbers);
cout << numbers[0] << endl; // prints "2"
return 0;}Vector of arrays
Section titled “Vector of arrays”A vector, as a not-fixed structure in size can hold multiple arrays and therefore act as an flexible two-dimensional array alternative. Coming soon.
Loop over a vector
Section titled “Loop over a vector”vector<int> numbers;
numbers.push_back(1);numbers.push_back(2);numbers.push_back(3);
for (int number : numbers) { cout << number << endl;}