我需要存储一个动态数组元素(std :: vector)。 这些元素可以是单个指针,也可以是指针数组。
我不想要一个多维数组,因为它会产生大量的分配,因为几乎所有元素都是单个指针。
我想这样做是因为我想要在随机位置随机移动矢量或插入元素,但是矢量的某些元素不应该分开。
我目前的想法是:
struct Element
{
bool isArray;
union
{
void* pointer;
std::vector<void*> pointers;
};
};
std::vector<Element> elements;
还有其他好的选择吗?
答案 0 :(得分:0)
如果存储向量,每次向其中一个元素添加新指针时,都会有堆重新排列的风险,这可能需要一些时间,具体取决于元素的数量。
我建议你存储vector&gt;,并且,在Element结构中,我建议你存储boost :: any而不是void *,它往往更安全,更容易处理,更容易查找每个指针的类。