【发布时间】:2011-09-21 06:45:15
【问题描述】:
所以我有一个名为 digits 的数组,它具有动态分配的内存。初始容量设置为默认容量 20。我试图弄清楚如何实现以下代码,以便如果将某些内容添加到超过容量的数组中,代码将创建一个 2^n 的新数组更大(即 40、80、160)。但是我希望它有一个 for 循环,这将使数组 2^n 更大,直到新容量大于输入的容量。
void BigNum::resize(size_t n)
{
size_t *NEW_CAPACITY;
if(n == capacity)
return; // The allocated memory is already the right size
if(n < used)
n = used;
NEW_CAPACITY = new size_t[n];
copy(digits, digits + used, NEW_CAPACITY);
delete[] digits;
digits = NEW_CAPACITY;
capacity = n;
非常感谢任何帮助
【问题讨论】:
-
你为什么不用
std::vector -
您不使用
std::vector的任何具体原因,它会自动执行类似的操作吗? -
因为我必须以这种方式处理它,这是一个要求。我所写的基本上就是我想要做的我只需要一个 for 循环来调整 NEW_CAPACITY 数组,直到它比输入的更大。我需要弄清楚如何在每个循环上使数组大小 2^n 更大
标签: c++ arrays pointers dynamic-memory-allocation