En C++, std::vector
est un container permettant de mémoriser des tableaux dont
la taille peut évoluer dynamiquement. std::vector
n'est pas une classe
pour manipuler des vecteurs mathématiques. Un élément std::vector
est un tableau.
Les avantages de std::vector
sont:
Pour utiliser les containers std::vector
, il faut inclure la bibliothèque suivante :
#include <vector>
Comme std::vector
est un container, il faut spécifier the type des éléments
que le tableau va contenir au moment de l'appel du constructeur. Dans l'exemple
ci-dessous, nous créons un vecteur vide (ou un tableau vide) destiné à contenir
des entiers :
std::vector<int> myVector;
On peut créer des vecteurs de différents types :
std::vector<char> myVectorOfCharacters;
std::vector<float> myVectorOfFloats;
std::vector<myCLass> myVectorOfObjects;
Pour ajouter un nouvel élément à la fin du vecteur, on utilise la méthode .push_back()
(plus de détails):
myVector.push_back(12);
Après cette ligne, la taille du vecteur est augmenté de 1 et la dernière cellule contient 12. Sur l'exemple ci-dessous, on ajoute 3 valeurs dans le vecteur :
std::vector<int> myVector;
myVector.push_back(17);
myVector.push_back(25);
myVector.push_back(12);
Le vecteur contient maintenant les valeurs suivantes:
Il y a deux façons d'accéder aux éléments du vecteur. la première est d'utiliser la syntaxe classique des tableau avec des crochets :
myVector[2];
La seconde option est d'utilser la méthode .at()
(plus de détails):
myVector.at(2);
La seconde option est pratique pour accéder aux élément sur un pointeur : pointer->at(5)
.
l'accès aux élements fonctionne aussi en écriture:
myVector[0] = 15;
Le code ci-dessous a le même effet que :
myVector.at(0) = 15;
La méthode .size()
retourne la taille du vecteur (le nombre de cellules du tableau) :
std::vector<int> myVector;
myVector.push_back(17);
myVector.push_back(25);
myVector.push_back(12);
// Display 3
std::cout << myVector.size() << endl;
La méthode .erase()
est utilisée pour retirer un élément du tableau. Notons que
la fonction attends un itérateur comme paramètre. Vous ne pouvez pas écrire :
myVector.erase(0);
Pour supprimer le premier élement, vous devez écrire :
myVector.erase(myvector.begin());
Pour supprimer le troisème élément, il faut écrire :
myVector.erase(myvector.begin()+2);
Le code ci-dessous résume les différentes opérations exposées sur cette page :