Bonjour à tous ,
j'aimerai bien comprendre l'utlisation du vector dans la librairie STL et notamment sur la manière d'insérer une classe particulière au lieu d'un simple type (int -char ) voici 2 codes ,l'une se base sur une int (çà marche) et l'autre ce que je voulais faire avec une simple classe et il ya un problème
ici déclaration d'un matrice à 2 dimensions mais de simple type entier et çà marche
mais ici je voudrai faire la même chose sauf qu'à la place des valeurs entiers , je voudrai mettre un élement d'une classe qui est de même type également (entier) mais ce qui est essentiel c'est la manière d'insérer l'objet et qu'on pourra utiliser push_back et push_front
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 #include <iostream> #include <vector> using namespace std; main() { // Declare size of two dimensional array and initialize. vector< vector<int> > vI2Matrix(3, vector<int>(2,0)); vI2Matrix[0][0] = 0; vI2Matrix[0][1] = 1; vI2Matrix[1][0] = 10; vI2Matrix[1][1] = 11; vI2Matrix[2][0] = 20; vI2Matrix[2][1] = 21; cout << "Loop by index:" << endl; int ii, jj; for(ii=0; ii < 3; ii++) { for(jj=0; jj < 2; jj++) { cout << vI2Matrix[ii][jj] << endl; } } }
j'ai un message d'erreur de ce genre :
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 #include <iostream> #include <vector> using namespace std; class Cordonnee{ private : int element; public: Cordonnee(); Cordonnee(int x); ~Cordonnee(); int getelement(){return element;} }; Cordonnee::Cordonnee(int x){ element = x ; } Cordonnee::Cordonnee(){ element = 0 ; } Cordonnee::~Cordonnee(){} int main() { // Declare size of two dimensional array and initialize. vector< vector<Cordonnee*> > vI2Matrix(3, vector<Cordonnee>(2,0)); Cordonnee P1 ,P2(100); vI2Matrix[0][0] = P1.getelement(); vI2Matrix[0][1] = P2.getelement(); vI2Matrix[1][0] = P1.getelement(); vI2Matrix[1][1] = P2.getelement(); // vI2Matrix[2][0] = 20; vI2Matrix[2][1] = P1.getelement(); cout << "Loop by index:" << endl; int ii, jj; for(ii=0; ii < 3; ii++) { for(jj=0; jj < 2; jj++) { cout << vI2Matrix[ii][jj] << endl; } } return 0; }en fait , est ce qu'on a le droit de mettre quelque chose de ce genre :essaiVector.cpp:53: erreur: no matching function for call to «std::vector<std::vector<Cordonnee*, std::allocator<Cordonnee*> >, std::allocator<std::vector<Cordonnee*, std::allocator<Cordonnee*> > > >::vector(int, std::vector<Cordonnee, std::allocator<Cordonnee> >)»
essaiVector.cpp:57: erreur: invalid conversion from «int» to «Cordonnee*»
merci d'avance pour vos réponses
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // Declare size of two dimensional array and initialize. vector< vector<Cordonnee> > vI2Matrix(3, vector<Cordonnee>(2,0)); et comme çà on pourra faire par exemple ; Cordonnee P1; vI2Matrix.push_back(P1);![]()
Partager