2017-04-15 166 views
1

我需要存儲元素的動態數組(std :: vector)。這些元素可以是單個指針或指針數組。將指針或指針數組存儲在動態數組中

我不想要一個多維數組,因爲它會導致大量的分配,因爲幾乎所有的元素都是單個指針。

我想這樣做是因爲我想隨機移動向量或向其中插入元素,但向量的某些元素不應該分開。

什麼我目前的想法是:

struct Element 
{ 
    bool isArray; 
    union 
    { 
     void* pointer; 
     std::vector<void*> pointers; 
    }; 
}; 

std::vector<Element> elements; 

有沒有其他好的選擇?

+0

只是想知道,你需要做什麼? – chbchb55

+0

輕鬆隨機化鏈接器中代碼塊和數據塊的順序。有些塊不能分開,因爲它們必須在另一個塊之前或之後。 – kokole

回答

0

如果你存儲矢量,每次你添加一個新的指針到一個元素,你會冒堆重新排列,這可能需要一些時間取決於元素的數量。

我建議你存儲vector>,並且,在Element結構中,我建議你存儲boost :: any而不是void *,它往往會更安全,更容易處理,並且更容易查找指針的類。