我试图调整另一个标题中的数组大小。我需要把当前的数组,并使其更小。这是我的头部处理调整大小的代码:
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}的数组。我得到了所有的错误,而不仅仅是一个持续的错误。
很抱歉,如果我的格式不是最好的,我还在学习。
发布于 2019-12-06 05:32:28
不管容量是变大还是变小,逻辑看起来都是这样的:
代码:
void resize(unsigned int newCap) // no need for reference here.
// No reference, no need for const
{
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,对吗?如果不是,您确实需要了解三人规则(和朋友)。真的。这很重要。请相信我。
https://stackoverflow.com/questions/59207169
复制相似问题