簡體   English   中英

一組(異構)向量的 Push_back 實現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM