我想实现一个动态数组,但我不想在扩展期间发生数组复制。这可以做到吗?
一个想法是生成一个指针数组,每个指针分配一个固定大小的块,但是这个指针数组也不能设计为可扩展的。
如果您希望在恒定时间内进行索引访问,这是不可能的,因为数组可能位于其他堆变量之间。 您能得到的最接近的是
realloc
。这使您可以增加现有的内存分配。但如果这是不可能的,它会将内容复制到新位置。
根据您的问题,可能还有其他解决方案:
std::vector
+ reserve()
std::list
realloc
也可以进行一些混合。您可以存储指向例如块的指针列表。 10000 个元素并重载索引运算符。