4 Chaînes de caractères et tableaux
Il existe plusieurs possibilités pour définir des tableaux et des chaînes
de caractères, nous allons d'abord présenter (succinctement)
les classes vector et string. Dans la
section 17, nous présenterons la méthode classique (``à la
C'') pour ces deux structures.
4.1 Chaînes de caractères - string
Pour utiliser la classe string, il faut placer en tête du
fichier : # include <string>
Ensuite, on peut définir des variables de chaînes de la manière
habituelle. ``string t;'' définit une variable de type
string, ``string s(N,c);'' définit une variable
s de longueur N (un entier) où chaque élément est initialisée
avec le caractère c, ``string mot = "bonjour";'' définit une
variable mot contenant la chaîne bonjour.
Etant donnée une chaîne s, s.size() représente la
longueur de s et le i-ème caractère d'une chaîne s est
désigné par s[i] avec i = 0,1,...s.size()-1.
Etant données deux chaînes s et t, s+t est une
nouvelle chaîne correspondant à la concaténation de s et
t.
4.2 Tableaux - vector
Pour utiliser la classe vector, il faut placer en tête du
fichier : # include <vector>
Un tableau est une structure typée : on distingue les tableaux sur les
int, char, etc. On précise donc son type lors de la
définition :
vector<int> Tab(100,5); // tableau d'entiers de taille 100 initialisé à 5
vector<int> Tab(50); // tableau d'entiers de taille 50 initialisé à 0
vector<double> T; // tableau de double, vide
La structure générale est donc ``vector<type> Nom(n,v);''
lorsqu'on initialise le tableau avec une valeur v. On peut aussi
initialiser un tableau avec un autre tableau : ``vector<type>
Nom1 = Nom2;'', les valeurs de Nom2 sont alors recopiées dans Nom1.
Etant donné un tableau T, T.size() correspond à la
taille2 de T et T[i] désigne le
i-ème élément avec i = 0, ...T.size()-1.
Les types string et vector comportent de nombreuses
autres fonctions de manipulation, nous n'en donnons ici qu'un aperçu,
nous reviendrons sur leurs caractéristiques dans le cours.
Remarque 1
L'instruction ``vector<vector<int> > T2;
'' définit un tableau à deux
dimensions. Pour l'initialiser, on peut utiliser l'instruction suivante :
vector<vector<int> > T2(100,vector<int>(50,1));
i.e. on initialise chacune des 100 cases de T1
avec un tableau de taille
50 rempli de 1 (``vector
<int>(50,1)
''). Le mystère de cette notation
sera élucidé un peu plus tard. Patience...