Подтвердить что ты не робот

Push_back() - структура в вектор

Как я могу push_back построить структуру в вектор?

struct point {
    int x;
    int y;
};

vector <point> a;

a.push_back( ??? );
4b9b3361

Ответ 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);