web-dev-qa-db-fra.com

Comment utiliser vector :: Push_back () `avec une structure?

Comment puis-je Push_back un struct dans un vecteur?

struct point {
    int x;
    int y;
};

std::vector<point> a;

a.Push_back( ??? );
34
Cristy
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));
39
Steve Jessop
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.

8
Wim
struct point {
    int x;
    int y;
};

vector <point> a;

a.Push_back( {6,7} );
a.Push_back( {5,8} );

Utilisez le crochet.

5
Rewd0n
point foo; //initialize with whatever
a.Push_back(foo);
1
The Communist Duck