Les
vecteurs
vector est un type de conteneur proposé par la librairie
standard. Quel est donc l'intérêt de ce conteneur,
étant donné que le C++ dispose de tableaux à une
dimension, éventuellement utilisables par allocation dynamique,
avec new et delete ?
Et bien d'une part un vector ressemble à un tableau, en ce sens
qu'il est contigu en mémoire, et que la notation v[i] peut
être utilisée . Contrairement à une liste il est
très facile d'accéder à un élément
au milieu du vecteur, mais il est beaucoup plus long d'insérer
des éléments à l'intérieur.
Par contre, contrairement à un tableau, un vecteur peut utiliser
la plupart des fonctions des conteneurs de la librairie standard, ainsi
que les itérateurs, ce qui permet de changer facilement de type
de conteneur dans un programme (comme on l'a vu, suivant ce que l'on
veut faire, certains conteneurs sont plus adaptés que d'autres).
Exemple:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
vector<string> v; // normalement on définit la taille vector<string> v(30);
v.push_back(string("Something"));
v.push_back(string("is"));
v.push_back(string("rotten"));
v.push_back(string("in"));
v.push_back(string("the"));
v.push_back(string("state"));
v.push_back(string("of"));
v.push_back(string("Denmark")); // et oui un vector s'agrandit sans problème
// (mais ça coûte cher)
// aussi on fait plutôt v.resize( taillenettementplusgrande );
vector<string>::iterator it;
for (it = v.begin(); it != v.end(); ++it)
cout << *it << " "; // on itère à travers le vecteur
cout << endl;
for (int i=0; i< v.size() ; i++)
cout << v[i] << " "; // exactement la même chose avec la notation tableau
cout << endl;
}
Sinon on dispose de beaucoup de méthodes analogues à
celles de list, dont insert, erase,
pop_back, front , back, swap ...