如何动态增加数组的维数?(100分)

  • 主题发起人 主题发起人 木牛流马
  • 开始时间 开始时间

木牛流马

Unregistered / Unconfirmed
GUEST, unregistred user!
???谢谢!!!
 
m:array of array of double;
a,b,i:integer;

setlength(m,a);
for i:=low(m) to high(m) do
setlength(m,b);
 
江南草,谢谢。你这样是给数组动态赋长度,请问动态加维数了?
 
急切???
 
动态增加维数? 你声明的时候就已经定了维数了,怎么能动态?
如一维是: var A: array of Integer; 二维: var A: array of array of Integer;
声明的时候就定了,怎么能动态增加呢?
 
我觉得也是,已经声明的东西怎么可以随便增加维数
那就应该使用数组这种格式啦,换成tree..
 
你把一维数组当多维来用就是了,老师没教过你吗?
 
声明的时候就已经定了维数了,确实是不能动态。
那可以写个类给他赋参数,动态生成不就行了。
 
你还是说说你要用它来做什么吧
说不定还可以用其他办法。
 
我想用数组存放Cube(立方体)里的数据,因为个个Cube的维度数不确定,
我想根据Cube的维度数来初始化定义个动态数组。
 
立方体,三维的(最多了)
你用哪位就初始化哪维 南草的方法可行
 
我想把cube的一个维度作为一个数组的一个维,那样好赋值、好查询。
 
用C++实现代码:

void* make_n_d_array( int n )
{
// suppose you want an n-d array like: int a[100][100][100]...
void** p = 0;
if (1 < n) {
p = (void**)malloc( 100 * sizeof( void* ));
for (int i = 0
i < 100
++i) {
p = make_n_d_array( n - 1);
}
}
else if (1 == n) {
p = (void**)malloc( 100 * sizeof( int ));
}
return p;
}

int main()
{
int*** array_3d;

array_3d = (int***)make_n_d_array( 3 );

array_3d[1][3][4] = 9;

}

数组长度也是动态的怎么办?

a hint: use <stdarg.h>, i.e. the '...'. left to you as an exercise ba...
 
后退
顶部