Bonjour à tous,
je ne suis pas très fort en c++ et j'ai besoin d'un petit coup de main.
Admettons par exemple que je veuille construire le tableau suivant :
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
6 6 6 6 6 6
7 7 7 7 7 7 7
8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9
Pour cela, je tape le cours programme suivant :
Ce programme réalise bien la tâche demandée. Seulement, je me demandais si ce n'était pas un business risqué d'écrire tab2D.push_back(tab1D) et juste dérrière tab1D.clear(). Car si je ne me trompe pas dans mon interprétation, je pense que je recopie dans tab2D l'adresse de tab1D, et non pas tous les éléments de tab1D un à un. Et donc, faire un clear sur cette adresse pourrait poser problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 #include <iostream> #include <vector> using namespace std; int main (int argc, char * const argv[]) { int i,j; vector < vector<int> > tab2D; vector <int> tab1D; // Remplissage du tableau 2D recherché for(i=1;i<10;i++) { for(j=0;j<i;j++) tab1D.push_back(i); tab2D.push_back(tab1D); tab1D.clear(); } // Affichage du résultat for(i=0;i<tab2D.size();i++) { for(j=0;j<tab2D[i].size();j++) cout << tab2D[i][j] << " "; cout << endl; } return 0; }
Qu'en pensez-vous ?
Si effectivement vous confirmez que cette manière de faire n'est pas bonne, alors comment peut-on s'y prendre ???
Merci d'avance à tous les experts qui pourront m'éclairer !
Pepper.
Partager