2017-04-15 139 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 *,它往往会更安全,更容易处理,并且更容易查找指针的类。