Vous êtes sur la page 1sur 6

17/10/2022

Tableaux ?
POO
Le langage de programmation C++

Chapitre3: Les tableaux statiques et


dynamiques

Enseignante: Ines BOUZDI


Email: bouzidines@gmail.com
Niveau: 2TC

Utilisation
• Les tableaux ont un type
• Les tableaux ont une taille fixe (une constante)
Déclaration

type nom_tableau[taille];
Les Tableaux statiques

Evite d’initialiser élément par


élément le tableau
3 4

Déclaration (suite) Taille constante


Si on déclare un tableau de taille fixe, mais qu'on l'initialise
• Pour créer un tableau il est impératif que la taille soit une constante : un nombre ou un
avec moins d'éléments qu'il peut contenir, les éléments restant const int.
seront mis à zéro.

int tableau[] = { 1 , 5 , 45 , 3 , 9 };
Déclaration d’un tableau de 5 éléments

int tableau[512] = {0};


Déclaration d’un tableau de 512 éléments initialisés à 0

int tableau[6] = {1,12};


Déclaration d’un tableau de 6 éléments dont le contenu
6

est: 1,12,0,0,0,0 5

1
17/10/2022

Utilisation Exemple d’un tableau d’entiers

• Si n est la taille du tableau, les indices vont de 0 à n-1.

Pour désigner la i-ème


case
de tableau, on écrit tab[i]
Lestableaux utilisent de la mémoire, ne pas les utiliser si ils ne sont pas
nécessaires.

Spécificités des tableaux Spécificités des tableaux (suite)


On peut utiliser les tableaux dans les fonctions :

La seconde solution est à préférer car elle est réutilisable avec
des
tableaux de différentes tailles. 9 10

Égalité et affectation de tableaux Exercice applicatif


On ne peut pas faire d’égalité et d’affectation entre les tableaux. Ecrire un programme qui permet de saisir un tableau de 5
entier puis d’incrémenter chaque élément du tableau. Afficher
enfin les nouvelles valeurs du tableau obtenu.

Seule solution : itérer sur les éléments.

11 12

2
17/10/2022

correction de l’exercice applicatif


Exercice applicatif (2)
Ecrire un programme qui permet de saisir un tableau de 10
entier puis inverse l’ordre des éléments du tableau. Afficher
enfin les nouvelles valeurs du tableau obtenu.

13 14

correction de l’exercice applicatif(2)

Les tableaux dynamiques:


la classe Vector

15 16

Tableau dynamique: vector Vector: Déclaration


Tableau Dynamique: Une collection de données de même type et dont
le nombre peut varier au cours du déroulement du programme.

En C++, le type* vector nécessite:. #include <Vector>

Il existe plusieurs autres types de collections de données sous C++: les


listes, les maps, les sets

17 18
* En réalité vector n’est pas un type mais plutôt un template.

3
17/10/2022

Initialisation Accès direct aux éléments d’un vector


- Vecteur vide - Les indices d’un vector varient entre 0 et taille-1
vector <int> tab; - L’accès à un élément de vector se fait à travers son indice tab[3]
- Avec un ensemble de valeurs initiales
vector <int> tab({0,10,20,30,50}); Attention
- Avec une taille initiale données et tous les éléments à « nuls »
- II est impératif de désigner un élément qui existe (sinon ERREUR:
vector <int> tab(5);
Segmentation Fault)
- Avec une taille initiale donnée et tous les éléments à la même valeur
vector <int> tab(5,1);
Exemple d’erreur classique:
- Avec une copie d’un autre tableau
vector <int> tab(tab2); 19 20

Notion d’itérateurs (iterator)


Accès direct aux éléments d’un vector(2) - Les itérateurs (iterator) sont une généralisation des pointeurs
Le plus souvent, les éléments d’un vecteur sont parcourus à travers ce sont des objets qui pointent sur d’autres objets
des itérations
Exemple - Les itérateurs sont utilisés pour parcourir une série d’objets
- 1 ère possibilité
for(auto element:tableau)
for(int element:tableau) Exemple
- 2 ème possibilité

for(int i=0; i<tableau.size();i++)


21 22

Fonction utiles de la classe vector Autres fonctions spécifiques

renvoie la taille de tableau Quelques fonctions disponibles pour un tableau dynamique de type
vector :
détermine si tableau est vide ou non: renvoie un bool
supprime tous les éléments de tableau (et le transforme
tableau.push_back() : Ajout à la fin du vecteur. Pas de (type de) retour donc en un tableau vide) : la méthode empty retourne vrai
renvoie une référence au 1er élément
tableau.pop_back() : retire de la fin du vecteur. Pas de (type de) retour équivalente à tableau[0]
renvoie une référence au dernier élément
tableau.erase() : supprimer un élément ou un ensemble d’éléments entre deux équivalente à tableau[tableau.size()-1]
positions (les positions doivent être de type iterator) 23 24

4
17/10/2022

Exemple (erase)
Exercice applicatif
Créez un vecteur myVector initialement vide. Ajoutez 3 entiers de
votre choix. En utilisant la fonction pop_back, calculez la somme
des éléments du vecteur tout en supprimant l’ensemble de ses
éléments un à un.

25 26

Correction
Trier les valeurs d’un vecteur (ordre croissant)
- Utiliser la fonction sort (ajouter )

27 28

Trier les valeurs d’un vecteur (ordre décroissant) Les tableaux multidimensionnels
- tableau à plusieurs dimensions : tableau de tableaux…
- Le type de base d’un tableau peut être n’importe quel type, y
compris composé
Le type de base d’un tableau peut être lui même un tableau.
Exemple

correspond à la déclaration d’un tableau de 5 tableaux de 6 entiers chacun


tab[i] est donc un « vector »

29
tab[i][j] sera alors le (j +1)-ième élément de ce tableau. 30

5
17/10/2022

Exercice applicatif
Reproduire la structure de données suivante en utilisant la
classe vector

31

Vous aimerez peut-être aussi