¿Cómo puedo push_back una estructura en un vector?push_back() una estructura en un vector
struct point {
int x;
int y;
};
vector <point> a;
a.push_back(???);
¿Cómo puedo push_back una estructura en un vector?push_back() una estructura en un vector
struct point {
int x;
int y;
};
vector <point> a;
a.push_back(???);
point mypoint = {0, 1};
a.push_back(mypoint);
O si se le permite, dar point
un constructor, para que pueda utilizar un temporal:
a.push_back(point(0,1));
Algunas personas se opondrán si se pone un constructor en una clase declarada con struct
, y lo convierte en no POD, y tal vez usted no tiene el control de la definición de point
. Entonces esta opción podría no estar disponible para usted. Sin embargo, puede escribir una función que proporciona la misma comodidad:
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);
Tenga en cuenta que, dado que a
es un vector de puntos (no punteros a ellos), la push_back creará una copia de su punto de estructura - de manera segura p
puede ser destruido una vez que sale de alcance.
point foo; //initialize with whatever
a.push_back(foo);
¿Cómo funciona la función make_point, no será el MyPoint var fuera del alcance después de la vuelta? –
@VineetDeoraj: 'make_point' devuelve una copia de' mypoint'. –