我需要存储元素的动态数组 (std::vector)。 这些元素可以是单个指针,也可以是指针数组。
我不想要多维数组,因为它会导致大量分配,因为几乎所有元素都是单个指针。
我想这样做是因为我想打乱 vector 或在随机位置插入元素,但 vector 的某些元素不应分开。
我目前的想法是:
struct Element
{
bool isArray;
union
{
void* pointer;
std::vector<void*> pointers;
};
};
std::vector<Element> elements;
还有其他好的选择吗?
最佳答案
如果您存储 vector,则每次添加指向其中一个元素的新指针时,您都会面临堆重排的风险,这可能需要一些时间,具体取决于元素的数量。
我建议您存储 vector >,并且在 Element 结构中,我建议您存储 boost::any 而不是 void*,它往往更安全、更容易处理并且更容易查找每个指针类。
关于c++ - 在动态数组中存储指针或指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43421003/