Как я могу push_back построить структуру в вектор?
struct point {
int x;
int y;
};
vector <point> a;
a.push_back( ??? );
Ответ 1
point mypoint = {0, 1};
a.push_back(mypoint);
Или, если вам разрешено, укажите point конструктор, чтобы вы могли использовать временное:
a.push_back(point(0,1));
Некоторые люди будут возражать, если вы поместите конструктор в класс, объявленный с помощью struct, и он делает его не-POD, и, возможно, вы не контролируете определение point. Таким образом, этот вариант может быть недоступен для вас. Однако вы можете написать функцию, которая обеспечивает такое же удобство:
point make_point(int x, int y) {
point mypoint = {x, y};
return mypoint;
}
a.push_back(make_point(0, 1));
Ответ 2
point p;
p.x = 1;
p.y = 2;
a.push_back(p);
Обратите внимание, что поскольку a - это вектор точек (не указателей на них), push_back создаст копию вашей точечной структуры, поэтому p можно безопасно уничтожить, как только она выйдет из сферы действия.
Ответ 3
point foo; //initialize with whatever
a.push_back(foo);