gpt4 book ai didi

c++ - 一组(异构) vector 的 Push_back 实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:48 29 4
gpt4 key购买 nike

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

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

这是一个数组( vector )结构。现在我想 push_back 一个具有给定 vx、vy、id、rx、ry 数据值的粒子。天真地,我会将 push_back 应用于粒子对象 p 中的每个 vector 。

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

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

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

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

最佳答案

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

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

关于c++ - 一组(异构) vector 的 Push_back 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58477166/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com