OVH Cloud OVH Cloud

[Pour info] vector

8 réponses
Avatar
Bruno CAUSSE
Bonjour,

Pourquoi ne peut t'on inilialiser un vector de vector?

Ex : std::vector< std::vector<int> > table(100);

Ce n'est pas bien grave, juste pour comprendre.
--
Bruno

8 réponses

Avatar
Fabien LE LEZ
On Mon, 15 Aug 2005 14:59:42 +0200, Bruno CAUSSE :

Pourquoi ne peut t'on inilialiser un vector de vector?


Où est le problème ?

Ex : std::vector< std::vector<int> > table(100);


Le code ci-dessus crée un tableau de 100 tableaux vides.

Avatar
Bruno CAUSSE
dans l'article , Fabien LE LEZ à
a écrit le 15/08/05 15:31 :

Ex : std::vector< std::vector<int> > table(100);


Le code ci-dessus crée un tableau de 100 tableaux vides.


Hum.. Mon gcc rale, je re-testerai ce soir.

Peut ton initialiser le deuxieme tableau egalement?


Avatar
Fabien LE LEZ
On Mon, 15 Aug 2005 14:59:42 +0200, Bruno CAUSSE :

Pourquoi ne peut t'on inilialiser un vector de vector?

Ex : std::vector< std::vector<int> > table(100);


Rappel : un constructeur de vector<> est :

template <class T> vector<T>::vector
(int nombre_d_elements, T const& modele= T())


vector <int> v0 (42);
crée un tableau de 42 entiers, tous initialisés à la valeur par
défaut d'un int, c'est-à-dire 0.

vector <int> v9 (42, -9);
crée un tableau de 42 entiers, tous initialisés à la valeur -9.

typedef vector<int> VI;

VI vide;
crée un objet de classe VI (i.e. vector<int>), initialisé à la
valeur par défaut (i.e. un tableau vide).

vector <VI> v1 (50);
crée un tableau de 50 objets VI, tous initialisés à la valeur
par défaut d'un VI, c'est-à-dire un tableau vide.

vector <VI> v2 (50, v9);
crée un tableau de 50 objets VI, tous initialisés à la valeur
"v9", i.e. tous identiques à v9. En d'autres termes, il s'agit d'un
tableau de 50 tableaux contenant chacun 42 entiers ayant pour valeur
-9.

vector <VI> v3 (50, v0);
crée un tableau de 50 objets VI, tous initialisés à la valeur
"v9", i.e. tous identiques à v0. En d'autres termes, il s'agit d'un
tableau de 50 tableaux contenant chacun 42 entiers ayant pour valeur
0.

vector <VI> v3 (50, VI (42));
vector < vector<int> > v3 (50, vector<int> (42));
deux écritures différentes pour le même v3


std::vector<> a aussi un constructeur un peu spécial, qui permet
ceci :
vector < vector<int> > v3 (50, 42);
ce qui a le même effet que les 3 autres écritures de v3 : un tableau
de 50 tableaux de 42 éléments initialisés à leur valeur par défaut.

Avatar
Fabien LE LEZ
On Mon, 15 Aug 2005 15:40:27 +0200, Bruno CAUSSE :

Ex : std::vector< std::vector<int> > table(100);


Le code ci-dessus crée un tableau de 100 tableaux vides.


Peut ton initialiser le deuxieme tableau egalement?


Quel "deuxième tableau" ?
Il y a là un tableau de 100 tableaux.
Cf mon autre message
(<news:, 15h43) pour les
détails.



Avatar
Fabien LE LEZ
On Mon, 15 Aug 2005 15:43:49 +0200, Fabien LE LEZ
:

template <class T> vector<T>::vector
(int nombre_d_elements, T const& modele= T())
^^^


En fait, c'est pas int, c'est vector<>::size_type, qui est quelque
chose qui ressemble d'assez près à un unsigned int.
M'enfin bon, ça ne change pas le principe.

Avatar
Bruno CAUSSE
dans l'article , Fabien LE LEZ à
a écrit le 15/08/05 15:45 :

Quel "deuxième tableau" ?
Il y a là un tableau de 100 tableaux.
Cf mon autre message
(<news:, 15h43) pour les
détails.


Oui, merci pour ces details. Ah un "tres bon" livre en francais me manque
:-)

Avatar
Fabien LE LEZ
On Mon, 15 Aug 2005 15:59:27 +0200, Bruno CAUSSE :

Ah un "tres bon" livre en francais me manque


Apprends à lire l'anglais. C'est un prérequis indispensable à
l'apprentissage de la programmation.

Avatar
Bruno CAUSSE
dans l'article , Fabien LE LEZ à
a écrit le 15/08/05 16:10 :

Apprends à lire l'anglais. C'est un prérequis indispensable à
l'apprentissage de la programmation.


Oui, j'arrive a "déchiffrer" et je pense acquérir Accelerated C++ avant C++
efficace (en francais).