C++ 尝试将数组大小调整为-1
我正在尝试调整其他标题中的数组大小。我需要将当前阵列缩小一个。这是我在标题中处理大小调整的代码:C++ 尝试将数组大小调整为-1,c++,arrays,resize,C++,Arrays,Resize,我正在尝试调整其他标题中的数组大小。我需要将当前阵列缩小一个。这是我在标题中处理大小调整的代码: 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
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;
}
我希望得到一个输出,如果我有一个带有{1,2,3,4,5}的数组,我的最终目标是有一个带有{1,2,3,4}的数组。我会犯各种各样的错误,而不仅仅是一个错误
如果我的格式不是最好的,我很抱歉,我还在学习 无论容量是变大还是变小,逻辑都是这样的:
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;
}
void resize(unsigned int newCap)//此处无需引用。
//没有参考,不需要常量
{
如果(newCap==0)
{
新上限=容量*2;
}
Type*newArray=新类型[newCap];
对于(无符号整数i=0;i
我想我不能说服你使用它,是吗?如果没有,你真的需要知道。真正地这很重要。相信我。什么是容量?对不起,容量是指我的阵列可以容纳的容量。处理我的大小调整的标题类似于向量的工作方式。我想了解它们是如何工作的,所以我不依赖它们。另外,您不需要同时删除您创建的新数组和您拥有的数组。@user4581301您能再澄清一下吗?我不确定我是否遵循。@boyanhristov96我想我必须先删除数组,然后才能给它一个新的大小。另外,我知道我不需要删除newArray,但据我所知,在调用new时不删除是不好的做法。@user4581301I我尝试运行此命令,但我得到了一个C3892错误,“'newCap':无法分配给常量变量”。我想用std::vectors,但我试着教自己向量是如何工作的。谢谢你为我指出了这一点白痴。教我不要通过编译器运行示例。已修复。@user4581301它现在确实为我运行。然而,我得到了一个奇怪的错误,我的数组变成了{memory location,2,3,4,5}。不过,我的代码的其余部分可能会有其他问题,那个内存位置可能只是随机垃圾。确保没有(inti=1;i)的
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;
}