¥¥¥100分¥¥¥请教:对象的【三维数组】能用指针实现么?数组大小不定,这么new呀?

0sch 2003-10-22 03:25:26
如:

class A;//有很多数据项,成员函数很少

A*** a;//定义一个三维数组

//a[大小1][大小2][大小3],其中“大小1~3”有不同的取值
//“大小123”的实际含义是工况号、桩号、截面号

请问:我的类应该这么构造?能表达就行了,直接用三维数组大小不好定,用指针的指针的指针表示,new 的时候出错!头疼ing!

问题解决给100分
...全文
25 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Linux2001 2003-10-24
  • 打赏
  • 举报
回复
麻烦,麻烦!
zhukeke 2003-10-24
  • 打赏
  • 举报
回复
这种不定大小的数组是不能直接使用C++中的“数组”的。需要程序自己计算数组。具体方法如下:

class A;
int I,J,K; //确定三维数组的各维大小变量,由你的程序根据计算实际赋值

A** ppA;  //为什么要使用三级指针,我看不出任何理由。
      //当然,如果确实要三级指针,方法是类似的

ppA=malloc(I*J*K*sizeof(A*));
for(I=0;I<?;I++){    //?处由具体的数值代入,下同
for(J=0;J<?;J++){
for(K=0,K<?;K++)
*(ppA+I+J+K)=new A;
}
}
}
.......

//以下释放内存
for(I=0;I<?;I++){
for(J=0;J<?;J++){
for(K=0,K<?;K++)
delete (*(ppA+I+J+K));
}
}
}
free(ppA);
阿甘 2003-10-24
  • 打赏
  • 举报
回复
选择管理
0sch 2003-10-24
  • 打赏
  • 举报
回复
问个操作问题:
这个帖子我想加到100分,怎么加?
Phourm 2003-10-24
  • 打赏
  • 举报
回复
动态分配多维数组:
int*** a = new int**[2];
for(int i = 0 ; i < 2 ; i++)
{
a[i] = new int*[3];
for(int j = 0 ; j < 3 ; j++)
{
a[i][j] = new int[4];
for(int k = 0 ; k < 4 ; k++)
{
a[i][j][k] = 9;
}
}
}
注意delete
0sch 2003-10-24
  • 打赏
  • 举报
回复
to Phourm:你的方法不对,我最开始就是用的这种方法。感谢关注。
0sch 2003-10-24
  • 打赏
  • 举报
回复
用指针没有办法表示对象的三维数组吗?
问题不解决我可只能给20分的。
0sch 2003-10-22
  • 打赏
  • 举报
回复
自己来UP一下
arvid_gs 2003-10-22
  • 打赏
  • 举报
回复
直接用一维数组分配一段内存,然后你根据 i,j,k计算出在一维数组中的位置
然后就可以很容易操作了。
例如第一个工况号、桩号、截面号 就是 a[0],a[1],a[2],
一次存入就可以了!
0sch 2003-10-22
  • 打赏
  • 举报
回复
好像有的懂了,不过,太不直观了,怕搞错
阿甘 2003-10-22
  • 打赏
  • 举报
回复
可以直接开辟内存,然后在操作的时候模拟三维实现

不一定非要用三维数组或者是指针的指针的指针
popyyb 2003-10-22
  • 打赏
  • 举报
回复
mark

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧