Comment insérer une classe dans un vector
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 :oops:
ici déclaration d'un matrice à 2 dimensions mais de simple type entier et çà marche
Code:
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:
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 :
Citation:
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:
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 :ccool: