我正在尝试调整另一个标头中的数组的大小。我需要采用当前数组,并使其更小。这是我在标头处理中调整大小的代码:
void resize(const unsigned int & newCap = 0) {
// first, copy over old array into temp location
Type* newArray = new Type[Capacity];
for (unsigned int i = 0; i < Capacity; i++)
newArray[i] = array[i];
// Remove the old array, create with new capacity, copy over values
delete[] array;
if (newCap == 0)
array = new Type[Capacity * 2];
else if (newCap > Capacity)
array = new Type[newCap];
for (unsigned int i = 0; i < newCap; i++) array[i] = newArray[i];
// set the capacity
if (newCap == 0)
Capacity = Capacity * 2;
else
Capacity = newCap;
delete[] newArray;
}
在另一个标题中,我只是发送它
array.resize(array.size() - 1);
我希望得到一个输出,如果我有一个带有{1、2、3、4、5}的数组,我的最终目标是拥有一个带有{1、2、3、4}的数组。我遇到了各种各样的错误,而不仅仅是一个一致的错误。
[抱歉,如果格式化不是最好的,我仍在学习。
无论容量变大还是变小,逻辑看起来都像这样:
使用代码:
void resize(const unsigned int & newCap = 0)
{
if (newCap == 0)
{
newCap = Capacity * 2;
}
Type* newArray = new Type[newCap];
for (unsigned int i = 0; i < Capacity && i < newCap; i++)
{
newArray[i] = array[i];
}
delete[] array;
array = newArray;
Capacity = newCap;
}
我想我不能说服您使用std::vector
,可以吗?如果没有,您确实需要了解std::vector
。真。这一点很重要。相信我。