在动态数组中存储指针或指针数组

时间:2017-04-15 00:46:19

标签: c++

我需要存储一个动态数组元素(std :: vector)。 这些元素可以是单个指针,也可以是指针数组。

我不想要一个多维数组,因为它会产生大量的分配,因为几乎所有元素都是单个指针。

我想这样做是因为我想要在随机位置随机移动矢量或插入元素,但是矢量的某些元素不应该分开。

我目前的想法是:

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

std::vector<Element> elements;

还有其他好的选择吗?

1 个答案:

答案 0 :(得分:0)

如果存储向量,每次向其中一个元素添加新指针时,都会有堆重新排列的风险,这可能需要一些时间,具体取决于元素的数量。

我建议你存储vector&gt;,并且,在Element结构中,我建议你存储boost :: any而不是void *,它往往更安全,更容易处理,更容易查找每个指针的类。