c++ - 在动态数组中存储指针或指针数组

标签 c++

我需要存储元素的动态数组 (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/

相关文章:

c++ - 自动类型转换函数调用C++

c++ - 线程安全编程

c++ - http 隧道入门

c++ - 我如何将 Qt 的 QVariant 转换为 boost::any?

c++ - 指针变量和引用变量有什么区别?

c++ - 你能在堆上声明一个指针吗?

java - C++ Thrift : Can I use TFramedTransportFactory with TThreadedServer?

c++ - c++程序中的c文件

c++ - x86 放松排序性能?

c++ - OpenCV 3.0 问题 - 录制视频内存泄漏