Как использовать vector :: push_back () `со структурой? - PullRequest
34 голосов
/ 13 марта 2011

Как я могу push_back a struct в вектор?

struct point {
    int x;
    int y;
};

std::vector<point> a;

a.push_back( ??? );

Ответы [ 4 ]

39 голосов
/ 13 марта 2011
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));
8 голосов
/ 13 марта 2011
point p;
p.x = 1;
p.y = 2;

a.push_back(p);

Обратите внимание, что, поскольку a является вектором точек (а не указателей на них), push_back создаст копию вашей структуры точек - так что p можно безопасно уничтожить, как только он выйдет из области видимости.

5 голосов
/ 19 марта 2018
struct point {
    int x;
    int y;
};

vector <point> a;

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

Используйте фигурную скобку.

1 голос
/ 13 марта 2011
point foo; //initialize with whatever
a.push_back(foo);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...