如何将动态内存分配数组的大小调整为特定值
How to resize an dynamic memory allocated array to a specific value?
所以我有一个名为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;
任何帮助都非常感谢
如果你正在使用c++语法编写C代码-那么使用C方法:realloc
和malloc
。
如果你正在写c++代码-使用std::vector
而不是数组。
你所指的循环是一个简单的计算:
while(current<required) {
current = 2*current;
}
new_digits = realloc(digits, current);
// check that the allocation succeeded, handle errors, no need
// to copy data - realloc does that for you.
。
"我试图找出如何实现以下代码,以便如果有东西被添加到超过容量的数组代码将创建一个新的数组,是2^n大(即40,80,160)。然而,我希望它有一个for循环,它将使数组变大2^n,直到新的容量大于输入的容量。"
首先,我认为你指的是2*n而不是2^n。
第二,为什么不像其他评论者说的那样使用std::vector ?
第三,我不完全理解你的问题,但听起来你想要这个:int newCapacity = capacity;
while( newCapacity < n )
newCapacity *= 2;
这看起来很微不足道,所以你能澄清你的问题吗?
相关文章:
- 将动态分配的数组的大小调整为较小的大小C++
- 我的C++程序有问题.涉及动态调整整数数组的大小
- 通过新的后传递后创建的动态数组的错误以调整函数
- 根据内容动态调整 qwidget 和 qlayout 的大小
- Qt:如何调整QGraphicsItem以动态更改大小
- 调整动态数组大小时保留用户输入的值的问题
- C++我需要能够调整动态数组的大小
- 动态调整大小并填充C++中的矢量
- C++调整动态数组的大小
- 如何在C++中实现可动态调整大小的堆栈
- 在微控制器上用C++调整动态数组的大小是个好主意吗
- C++如何在不丢失数据的情况下调整动态数组的大小
- 调整动态数组大小时内存泄漏
- 调整动态字符串的大小会导致内存泄漏
- C++ - 调整动态数组的大小
- 使用 ASSERT " _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) "调整动态分配的内存C++的大小
- 调整动态字符串数组的大小
- 为类调整动态分配的指针数组的大小
- 调整动态数组 c++ 的大小
- 如何调整动态模板数组的大小