尝试将数组大小调整为 -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 }.我遇到了各种各样的错误,而不仅仅是一个持续的错误。

如果我的格式不是最好的,我很抱歉,我还在学习。

无论容量变大还是变小,逻辑如下:

  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)。真的。这一点很重要。相信我。