尝试将数组大小调整为 -1
Trying to resize an array by -1
我正在尝试调整另一个 header 中的数组的大小。我需要使用当前数组并将其缩小一个。这是我的 header 处理调整大小的代码:
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;
}
在另一个header我只是发送它
array.resize(array.size() - 1);
我希望得到一个输出,如果我有一个包含 {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;
}
我想我无法说服您使用 std::vector
, can I? If not, you really need to know about The Rule of Three (and friends)。真的。这一点很重要。相信我。
我正在尝试调整另一个 header 中的数组的大小。我需要使用当前数组并将其缩小一个。这是我的 header 处理调整大小的代码:
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;
}
在另一个header我只是发送它
array.resize(array.size() - 1);
我希望得到一个输出,如果我有一个包含 {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;
}
我想我无法说服您使用 std::vector
, can I? If not, you really need to know about The Rule of Three (and friends)。真的。这一点很重要。相信我。