【发布时间】:2012-03-27 19:00:18
【问题描述】:
假设我有:
#include <iostream>
using namespace std;
int **a; //Global Variable
int main()
{
n=5;
a = new int*[n];
for ( int i = 0 ; i < n ; i++ )
a[i] = new int[n] ;
}
是否有任何 realloc() 方法来增加行大小? (列大小是固定的) 我的意思是如果行大小是 5,那么我想让它变成 6 不多,只是 +1。 我用
for(i=0;i<n;i++)
{
counter++;
a[i] = (int *) realloc(a[i],counter*sizeof(int));
}
但我觉得有些不对劲......
编辑:请不要建议任何向量或类似的东西。因为我需要我的数组作为全局数组。
【问题讨论】:
-
"因为我需要我的数组作为全局数组。"跟什么有什么关系?
-
问题在于you are using pointers(Konrad Rudolph 的幻灯片)。
std::vector对象也可以是全局的。 -
@daknok_t 你建议我不要使用指针,但我的数组的列大小将从键盘输入。所以我必须编码
a= new int的东西。如果您知道任何定义矢量对象大小的方法,请告诉我:) -
@Who Cares
vector::reserve是您想要的。示例:std::vector<std::vector<int>> a; int main() { ... a.reserve(n); ... } -
@daknok_t 你能给我更多的信息吗?例如,1) 我如何定义像 a.reserve(m,n) 这样的二维? 2)如何添加新的“行”而不是列,列大小将是从键盘输入的变量,永远不会改变。只需添加一行。
标签: c++ multidimensional-array realloc