<sub class="descriptionSection">06-11-2024 04:10:pm // #Datatype // [[Data Types in C++]]</sub>
____
Vektoren sind ein Datentyp der, wie [[Stacks (C++)|Stacks]] daten in einer sequenz im Arbeitsspeicher ablegen. Ein Vektor kann jeden primitiven Datentyp enhalten
## Vektor vs Stack
Der Vorteil eines Vektors gegenüber eines Stacks, besteht darin das man bei Vektoren per Array Syntax spezifische Elemente accessen kann:
```cpp
cout << vec[<index>] << endl;
```
Allerdings gibt es hier natürlich performance implications die man beachten muss: Ein Vektor kann nur langsamer als ein Stack auf die Daten zugreifen.
## Syntax eines Vektors
> [!NOTE] Info
> Vektoren müssen erst per include importiert werden:
> `#include<vector>`
Einen Vector deklariert man so:
```cpp
//ohne werte, jegliche daten access operation resultiert in einem Segfault
vector<datatype> v;
//alertnativ kann man direkt daten zuweisen:
vector<datatype> v = {data, data, data};
```
Actual beispiel:
```cpp
vector<int> v;
vector<int> v = {1, 2 ,3};
```
## Operations in einem Vektor
Ein Vektor hat ein paar built-in Funktionen. Für eine komplette liste, am besten hier gehen: https://learn.microsoft.com/en-us/cpp/standard-library/vector-class?view=msvc-170#functions
```cpp
vector<int> v = {1, 2, 3};
v.size() //returned 3, ist die komplette länge des vectors
v.push_back(1) //fügt die nummer 1 nach dem höchsten index im Vector ein
v.pop_back() //removed den höchsten Index vom Vector
```
## For-each Loop
Um über einen Vektor zu iterieren, kann man eine for-each funktion nutzen:
```cpp
vecot<int> v = {1, 2, 3}
for(int value : v){ // definiert eine for-each loop mit dem aktuellen element als "value"
cout << value << " "; // wird returnen: 1 2 3
}
```
> [!abstract] Iterierungsrichtung
> Eine for-each loop wird immer vom niedrigsten index zum höchsten index gehen