我希望存儲d維點的大矢量(d fixed and small:< 10)。用C++編寫的矢量存儲器
如果我將Point
定義爲vector<int>
,我認爲vector<Point>
會在每個位置存儲指向Point的指針。
但是,如果定義一個Point
作爲固定大小的物體,如: std::tuple<int,int,...,int>
或std::array<int, d>
, 將程序存儲在連續的存儲器所有的點或將附加了間接水平保持?
如果答案是數組避免了額外的間接尋址,那麼在掃描vector<Point>
時這會對性能(緩存漏洞利用位置)產生很大影響嗎?
標準向量類應該與數組在很大程度上兼容,這意味着它分配的數據存儲在連續的內存塊中,就像數組一樣。如果你有一個'std :: vector',那麼所有'Point'對象都會連續存儲。如果Point類有自己的指針(直接或間接(就像它有一個向量時那樣)),那麼不是所有的數據都會連續存儲。 –
是的,我會去元組路線或更好的,只是使用普通的C風格的結構(我仍然發現煩惱使用元組,即std :: get()並不是那麼直觀)。 –
Robinson