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 ...
Drupal 7 Appliance - Powered by TurnKey Linux