将指针或一系列指针存储在动态阵列中

Storing pointer or array of pointers in a dynamic array

本文关键字:指针 动态 阵列 存储 一系列      更新时间:2023-10-16

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

我不想要多维阵列,因为它会导致很多分配,因为几乎所有元素都是单个指针。

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

我目前在想的是:

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

还有其他好的替代方案吗?

如果您存储向量,则每次将新的指针添加到风险重新排列的元素之一中,这可能会花费一些时间,具体取决于元素的数量。p>我建议您存储矢量>,并且,在元素结构中,我建议您存储boost ::任何而不是void*,它往往更安全,更易于处理,并且更易于查找指针的课程。