说我有一个结构(或类),如下所示:
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回退。天真的,我会将push_back应用于粒子对象p
中的每个向量。
p.vx.push_back(vx_val); p.vy.push_back(vy_val); ...
但是这意味着任何希望添加新字段(新矢量)的开发人员都必须在每次需要添加新粒子数据时手动添加push_back
调用。
是否有可能以这样的方式实现push_back
,使其遍历particle
结构中的所有元素并添加到向量的尾部?
我能够解决此问题的唯一方法是通过在particle
结构中创建对向量的引用列表。但这更像是C,可能不是C ++的风格。有没有标准/整洁的方法来实现这一目标?
无论尝试什么,都必须跟踪成员名称及其类型。因此,您无法使用一种方法来全部将push_back
自动添加到新成员。
我能想到的一种简单的方法是将指向成员的指针存储在元组中,并使用带有参数包的函数来遍历指针并全部回退。这将保存push_back,但是在添加新成员时,您仍然需要向该元组添加新的指针。