【问题标题】:How can I resize a dynamic array of pointers without using a vector如何在不使用向量的情况下调整动态指针数组的大小
【发布时间】:2021-10-26 17:49:42
【问题描述】:

如果我想调整这个数组的大小:

int array[5];

我会这样做:

int* temp = new int [n];
...
array = temp;

但是,如果我有这个数组,我该怎么做呢?

int *array[5];

可能是这样的?

int** temp = new int* [n];

【问题讨论】:

  • std::vector<int> array(n);
  • 如果我不想使用矢量怎么办?
  • 如果您不想使用向量,您必须编写代码来管理内存和复制对象。如果您想将其作为一种学习体验,那么您会遇到很多陷阱。如果您想这样做以创建严肃的代码,请不要这样做。

标签: c++ arrays


【解决方案1】:

不能调整固定数组的大小,句号。它的大小是恒定的,在编译时确定。

不能new[]'ed 指针分配给固定数组。

所以,你的两个例子都不行。

在你的第一个例子中,你需要这个:

int* array = new int [5];

在你的第二个例子中,你需要这个:

int** array = new int* [5];

无论哪种方式,在分配新内容之前不要忘记delete[] array,例如:

int* array = new int [5];
...
int* temp = new int [n];
...
delete[] array;
array = temp;

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 2021-01-14
    • 1970-01-01
    相关资源
    最近更新 更多