intro_cpp_4.pdf

(78 KB) Pobierz
Tableaux dynamiques:
vecteurs
Pour pallier les défauts inhérents à la rigidité des tableaux
de taille fixe (built-in
array),
la librairie (générique) standard
1
de C++
fournit un type de donnée
2
dénommée
vector
(vecteur), offrant au programmeur
un moyen très efficace pour construire des structures de données permettant de
représenter des
tableaux de tailles variables
(i.e.
tableaux dynamiques)
3
.
La taille de ces «tableaux» n’est pas obligatoirement prédéfinie,
et peut donc varier en cours d’utilisation.
Pour pouvoir utiliser ces
vecteurs
dans un programme,
il faut, comme dans le cas des entrées-sorties, importer les prototypes et
définitions contenus dans la librairie, au moyen de la directive d’inclusion:
#include
<vector>
1. Le nom officiel de cette librairie est
STL
(Standard
Template Library)
2. En fait de type, il s’agit en réalité d’un
chablon
de
classe
(template
classe),
c’est-à-dire une définition
générique
(valide et réutilisable pour n’im-
porte quel type, de base ou complexe).
3. Pour être exact, les
vectors
sont plus que de simples tableaux dynamiques; ils s’inscrivent dans un famille plus générale d’éléments, utilisés comme
briques de bases pour les structures de données complexes, éléments que l’on appelle
conteneurs
(containers) ou
collections,
et pour lesquels un
ensembre de caractéristiques et contraintes très précises sont définies, comme par exemples les performances minimales des algorithmes d’accès et
de recherche.
Informatique I
Introduction à C++ (IV)
–1–
Vecteur:
déclaration (1)
Un
vecteur
peut être déclaré selon la syntaxe suivante:
vector<«type»>
«identificateur»;
Avec
type
n’importe quel type, élémentaire ou non,
et correspondant au type de base du tableau.
Exemple:
#include
<vector>
...
vector<int>
age;
Il s’agit d’une déclaration de variable («
age
») tout à fait traditionnelle, dans laquelle
la séquence «
vector<int>
» correspond à l’indication du type de la variable,
en l’occurence un tableau dynamique (vecteur) d’entiers.
On voit dans ce cas clairement ressortir la nature composite du type.
Informatique I
Introduction à C++ (IV)
–2–
Vecteur:
déclaration (2)
Le fait que l’on s’intéresse ici à des
collections
d’un nombre potentiellement
variable d’éléments explique que la déclaration puisse ne comporter aucune
indication sur la taille initiale du tableau. Une variable ainsi déclarée
correspond alors tout simplement à un tableau vide.
Cependant, une taille initiale peut, si nécessaire, être indiquée;
la syntaxe de la déclaration est alors:
vector<«type»>
«identificateur»(«taille»);
Un tableau nommé
identificateur
comportant
taille
éléments de type
type
sera créé, chacun des éléments ayant comme valeur la valeur par défaut de
type
généralement une valeur dérivée de l’expression
(0)
.
Exemple:
age[0]
age
0
0
0
0
0
–3–
vector<int>
age(5);
Correspond à la déclaration d’un tableau d’entiers, initialement
composé de 5 éléments valant 0.
age[1]
age[2]
age[3]
age[4]
Informatique I
Introduction à C++ (IV)
Vecteur:
déclaration avec initialisation
La déclaration d’un
vecteur
peut être associée à une
initialisation explicite
des éléments
initiaux; cependant, cette initialisation ne pourra consister qu’en (a) une duplication
d’un même élément, ou (b) en une duplication d’un
vecteur
pré-existant:
4
(a)
vector<«type»>
«identificateur»(«taille»,«valeur»);
valeur
est une expression de type
type
, dont le résultat sera pris comme
valeur intiale des
taille
éléments du tableau
identificateur
.
vector<int>
vect1(5,8);
déclare le
vecteur
d’entiers
vect1
avec un contenu initial
de 5 entiers valant «
8
»
Exemple
:
(b)
vector<«type»>
«identificateur»(«id-vector»);
id-vector
est un identificateur de
vecteur
de type de base
type
.
vector<int>
vect2(vect1);
déclare le
vecteur
d’entiers
vect2
, avec un contenu initial identique au contenu
de
vect1
(duplication).
Exemple
:
4. Contrairement au cas des tableaux de taille fixe, il n’existe pas de moyen simple pour exprimer la valeur littérale d’un
vecteur
dont les éléments
n’ont pas tous la même valeur.
Informatique I
Introduction à C++ (IV)
–4–
Vecteur:
constante
Comme pour tous les autres types, il est possible de
déclarer des
constantes
de type
vecteur
La syntaxe est identique à celle des autres déclarations de constantes:
const
vector<«type»>
«identificateur»(«initialisation»);
identificateur
correspond alors à un
vecteur
dont tant le nombre d’éléments
que la valeur de chacun de ces éléments sont fixes (et ne peuvent donc êtres modifiés).
Exemple:
const
vector<int>
age;
Correspond à la déclaration d’un
vecteur
constant vide (ne contenant
aucun élément) et auquel aucun élément ne pourra être ajouté
5
const
vector<int>
vect2(vect1);
Correspond à la déclaration d’une copie figée (snapshot) du vecteur
vect1
.
Il n’est pas possible de déclarer des vecteurs de constantes.
Ainsi, la syntaxe
vector<const «type»> «identificateur»
bien que licite en soit, n’est en pratique pas utilisable.
5. Cette déclaration est bien sûr totalement inutile.
Informatique I
Introduction à C++ (IV)
–5–
Zgłoś jeśli naruszono regulamin