2.4- Collections


1 Les objets de type vector

2 Listes chaînées

3 Autres structures de données


1 Les objets de type vector

On dispose d'une classe-collection qui est décrite dans la norme : vector. Pour pouvoir utiliser cette classe :

#include <vector>

Par exemple, on peut gérer une liste d'entier :
int i=7
vector<int> listeEntier;
liste.push_back(i);
std::cout << liste.at(i);
Dans ce cas, i est ajouté à la fin de la collection d'objet.
Ou bien une liste d'objets de type string (en ayant bien sur placé l'instruction #include en début de fichier source) :
vector<string> listeChainee;
string str("Les sanglots longs des violons");
listeChainee.push_back(str);

Ou bien une colletion de pointeurs etc. Enfin, il est possible de créer un vecteur de vecteurs :
vector<vector<int> > temp;

La classe vector contient notamment les méthodes suivantes :
Par exemple, pour afficher l'ensemble des éléments de l'objet de type vector liste:
for(int i=0;i


2 Les listes chaînées

Les listes chainées sont des structures de données où l'enregistrement de la liste se fait avec chaque élément qui pointe sur le suivant.

Par exemple, sur l'exemple, on enregistre une liste chainée d'objet de type Action. Chaque Action est définie par des champs propres et en plus par un pointeur sur Action qui référence l'objet suivant de la liste. L'ensemble de la liste est conservé par un pointeur Action * sur le premier élémnet de la liste. Il est ensuite possible de parcourir la liste en passant d'élément en élément. Pour modifier la liste et ajouter une Action a après une Action a2 qui pointe sur une Action a3, on fait pointer a2 sur a et on fait pointer a sur a3.

Pour supprimer un élement Action a2 de la liste, en supposant qu'il est compris entre un élément a1 et un élément a3 : on supprime a2 et on fait pointer a1 sur a3.

Un exemple de listeChainee sur des objets Action est proposé :
fichierSource. Sur le cas proposé, non seulement on implémente une liste chainée, mais on conserve également le classement des Action par numéro.


3 Les autres structures de données

On peut imaginer tout type de structure : des piles LIFO / des files LILO. En fonction des cas, il sera possible de construire des structures de données ad-hoc.