Comment puis-je Push_back
un struct
dans un vecteur?
struct point {
int x;
int y;
};
std::vector<point> a;
a.Push_back( ??? );
point mypoint = {0, 1};
a.Push_back(mypoint);
Ou si vous êtes autorisé, donnez à point
un constructeur, afin que vous puissiez utiliser un temporaire:
a.Push_back(point(0,1));
Certaines personnes s'opposeront si vous mettez un constructeur dans une classe déclarée avec struct
, et qu'il le rend non-POD, et peut-être que vous ne contrôlez pas la définition de point
. Il se peut donc que cette option ne soit pas disponible pour vous. Cependant, vous pouvez écrire une fonction qui offre la même commodité:
point make_point(int x, int y) {
point mypoint = {x, y};
return mypoint;
}
a.Push_back(make_point(0, 1));
point p;
p.x = 1;
p.y = 2;
a.Push_back(p);
Notez que, puisque a
est un vecteur de points (pas des pointeurs vers eux), le Push_back créera une copie de votre structure de points - donc p
peut être détruit en toute sécurité une fois qu'il est sorti de portée.
struct point {
int x;
int y;
};
vector <point> a;
a.Push_back( {6,7} );
a.Push_back( {5,8} );
Utilisez le crochet.
point foo; //initialize with whatever
a.Push_back(foo);