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
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;
      }
   }
}
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
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;
}
j'ai un message d'erreur 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*»
en fait , est ce qu'on a le droit de mettre quelque chose de ce genre :

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);
merci d'avance pour vos réponses