首页 新闻 会员 周边

如何用List定义多维数组?

0
悬赏园豆:5 [已解决问题] 解决于 2013-03-30 12:41

如何用List定义多维数组?

我的想法是这样的;

先将List<List<List<double>>> list = new List<List<List<double>>>()初始化为

一个含有信息为

list[NX][NY][NZ]={0}的三维数组,然后再可以对list[NX][NY][NZ]进行任意的赋值。

但是List好像做多维比较麻烦,而且不能将三个维的长度先确定好。

像C++里面的vector定义三维那样

vector<vector<vector<double>> > vec(NX,vector<vector<double> >(NY, vector<double>(NZ)));

或者

vector<vector<vector<double>> > vec;

vec.resize(NX,vector<vector<double> >(NY, vector<double>(NZ)));

像这样的话就比较好赋值

c#
ZGHAPPY的主页 ZGHAPPY | 菜鸟二级 | 园豆:207
提问于:2013-03-29 22:44
< >
分享
最佳答案
0

List<List<List<string>>> list = new List<List<List<string>>>();
for (int i = 0; i < 4; i++)
{
List<List<string>> list2d = new List<List<string>>();
for (int j = 0; j < 4; j++)
{
List<string> list1d = new List<string>();
for (int k = 0; k < 4; k++)
{
string output = "i=" + Convert.ToString(i) +
" j=" + Convert.ToString(j) +
" k= " + Convert.ToString(k);
list1d.Add(output);
}
list2d.Add(list1d);
}
list.Add(list2d);
}

ZGHAPPY | 菜鸟二级 |园豆:207 | 2013-03-30 12:39
其他回答(3)
0

List定义多维数组

List<int,string> Mytable=new ListList<int,string>();

Mytable.add(0,"中国");

Mytable.add(1,"美国");

应该是你想要的

艾尼路 | 园豆:116 (初学一级) | 2013-03-29 23:42

是定义一个大型的三维数组

mytable[1000][1000][1000]三维数组,想用list,如何定义

支持(0) 反对(0) ZGHAPPY | 园豆:207 (菜鸟二级) | 2013-03-30 10:07

这个就是三维数组,但是每一维的长度不定,所以我想用Lsit,但是又没找到比较好定义的方式

支持(0) 反对(0) ZGHAPPY | 园豆:207 (菜鸟二级) | 2013-03-30 10:14
0

如果是比较多结构的话,可以考虑下 写个类,然后List<定义的类>会比较灵活点,可读性比较强

.! | 园豆:402 (菜鸟二级) | 2013-03-30 05:57

谢谢,但是太抽象了,能不能具体点

支持(0) 反对(0) ZGHAPPY | 园豆:207 (菜鸟二级) | 2013-03-30 10:26
0
收获园豆:5
陈希章 | 园豆:2538 (老鸟四级) | 2013-03-30 07:40

谢谢你,你给的资料有点像,但是好像并不像,我想开辟的是大型的三维数组,就像table[1000][1000][1000]每一维都达到1000,你的资料里面好想就是将3个数组并列了

支持(0) 反对(0) ZGHAPPY | 园豆:207 (菜鸟二级) | 2013-03-30 10:11

这个就是三维数组,但是每一维的长度不定,所以我想用Lsit,但是又没找到比较好定义的方式

支持(0) 反对(0) ZGHAPPY | 园豆:207 (菜鸟二级) | 2013-03-30 10:14

@飞翔的思想: 如果是多维数组,本来就是可以的,如果每一维的长度不同,叫做锯齿数组。可以参考 http://www.cnblogs.com/zhaozhan/archive/2010/05/05/1727643.html

支持(0) 反对(0) 陈希章 | 园豆:2538 (老鸟四级) | 2013-03-30 10:27

@陈希章: 在一个类中定义的话

private int crest[,,]=new int[,,];

他会出错,必须初始化每一维的长度,即必须private int crest[,,]=new int[1000,1000,1000];但是每一维的长度不固定,只能在后面赋值给它,所以遇到问题了?用List<List<List<dobule>>> 可以不用初始化长度,但是赋值的时候又比较麻烦,要不断add一维和二维list数组

支持(0) 反对(0) ZGHAPPY | 园豆:207 (菜鸟二级) | 2013-03-30 11:06

@零号: 

List<List<List<string>>> list = new List<List<List<string>>>();
for (int i = 0; i < 4; i++)
{
List<List<string>> list2d = new List<List<string>>();
for (int j = 0; j < 4; j++)
{
List<string> list1d = new List<string>();
for (int k = 0; k < 4; k++)
{
string output = "i=" + Convert.ToString(i) +
" j=" + Convert.ToString(j) +
" k= " + Convert.ToString(k);
list1d.Add(output);
}
list2d.Add(list1d);
}
list.Add(list2d);
}

支持(0) 反对(0) ZGHAPPY | 园豆:207 (菜鸟二级) | 2013-03-30 12:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册