我需要存储一个动态的元素数组(std :: vector(。这些元素可以是单个指针,也可以是一系列指针。
我不想要多维阵列,因为它会导致很多分配,因为几乎所有元素都是单个指针。
我想这样做,因为我想在随机位置上插入向量或插入元素,但是不应分开向量的某些元素。
我目前在想的是:
struct Element
{
bool isArray;
union
{
void* pointer;
std::vector<void*> pointers;
};
};
std::vector<Element> elements;
还有其他好的替代方案吗?
如果您存储向量,则每次将新的指针添加到风险重新排列的元素之一中,这可能会花费一些时间,具体取决于元素的数量。p>我建议您存储矢量>,并且,在元素结构中,我建议您存储boost ::任何而不是void*,它往往更安全,更易于处理,并且更易于查找指针的课程。