Скажем, у меня есть структура (или класс), как показано ниже:
struct _particle {
std::vector<float> vx , vy;
std::vector<int> id;
std::vector<double> rx, ry;
};
typedef struct _particle particle;
particle p;
Это структура массивов (векторов). Теперь я хочу отправить туда одну частицу с данными значениями vx, vy, id, rx, ry. Наивно, я бы применил push_back к каждому из векторов в объекте частицы p
.
p.vx.push_back(vx_val); p.vy.push_back(vy_val); ...
Но это означает, что любой разработчик, желающий добавить новое поле (новый вектор), должен будетвручную добавляйте вызов push_back
каждый раз, когда необходимо добавить новые данные частиц.
Можно ли реализовать push_back
таким образом, чтобы он перебирал все элементы в структуре particle
и добавлял к хвосту векторов?
Единственный способ решить эту проблему - создать список ссылок на векторы в структуре particle
. Но это больше похоже на C и может быть не в стиле C ++. Есть ли стандартный / аккуратный способ добиться этого?