Push_back一组(异构)向量的实现

Push_back implementation for a (heterogenous) set of vectors

本文关键字:向量 实现 异构 back 一组 Push      更新时间:2023-10-16

假设我有一个结构(或类(,如下所示:

struct _particle {
std::vector<float> vx , vy;
std::vector<int> id;
std::vector<double> rx, ry;
};
typedef struct _particle particle;
particle p;

这是数组(向量(的结构。现在我想push_back一个粒子,给定的vx,vy,id,rx,ry数据值。天真地,我会对粒子对象中的每个向量应用push_backp

p.vx.push_back(vx_val); p.vy.push_back(vy_val); ... 

但这意味着任何希望添加新字段(新向量(的开发人员都必须在每次需要添加新粒子数据时手动添加push_back调用。

是否可以以这样一种方式实现push_back,即它循环遍历particle结构中的所有元素并添加到向量的尾部?

我能够解决这个问题的唯一方法是在particle结构中创建对向量的引用列表。但这更像C,可能不是C++的风格。有没有一种标准/整洁的方法来实现这一目标?

无论你尝试什么,你都必须跟踪成员名称及其类型。因此,您不能有一个方法会自动将push_back添加到新成员。

我能想到的一种简单的方法是将指向成员的指针存储在元组中,并使用带有参数包的函数来遍历指针并全部推回。这将保存push_back但在添加新成员时仍需要向元组添加新指针。