[英]Push_back implementation for a (heterogenous) set of vectors
假設我有一個結構(或類),如下所示:
struct _particle {
std::vector<float> vx , vy;
std::vector<int> id;
std::vector<double> rx, ry;
};
typedef struct _particle particle;
particle p;
這是 arrays(向量)的結構。 現在我想用給定的 vx、vy、id、rx、ry 數據值將一個粒子推回給它。 天真地,我會對粒子 object p
中的每個向量應用 push_back 。
p.vx.push_back(vx_val); p.vy.push_back(vy_val); ...
但這意味着任何希望添加新字段(新向量)的開發人員都必須在每次需要添加新粒子數據時手動添加push_back
調用。
是否有可能以這樣的方式實現push_back
,它遍歷particle
結構中的所有元素並添加到向量的尾部?
我能夠解決這個問題的唯一方法是在particle
結構中創建一個對向量的引用列表。 但這更像是C,可能不是C++的風格。 有沒有標准/簡潔的方法來實現這一目標?
無論您嘗試什么,都必須跟蹤成員名稱及其類型。 所以你不能有一個方法會自動將push_back
添加到新成員。
我能想到的一個簡單的方法是將指向成員的指針存儲在一個元組中,並通過指針使用帶有參數包的 function 到 go 並推回所有。 這將保存 push_back,但是當添加新成員時,您仍然需要添加指向元組的新指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.