2012-08-01 81 views
1

您好,我将大大提供任何帮助。如何在我的锯齿阵列中插入一个新阵列

好吧,让我们来看看,首先我声明交错数组是这样,下一个代码

int n=1, m=3,p=0; 

int[][] jag_array =new[n]; 

现在我的锯齿状阵列将有1阵列内,旁边Y具有填补像这样的数组:

car=2; 
do 
    { 
    jag_array[p]= new double[car]; 
    for (int t = 0; t < carac; t++) 
      { 
      jag_array[p][t] = variableX; 
      } 
    p=p+1 
    } 
while(p==0) 

现在我的锯齿状排列是这样的(也插在这个例子中一些数据):

jag_array[0][0]=4 
jag_array[0][1]=2 

现在我的问题我如何可以插入一个新的数组白衣出失去我previos的数据,如果我宣布

jag_array[p+1]= new double[car]; 

我将从previos一个丢失数据,我会喜欢看的东西喜欢这样的:

jag_array[0][0]=4 
jag_array[0][1]=2 
jag_array[1][0]=5 
jag_array[1][1]=6 

我没有从开始2数组声明的原因是因为我不知道有多少我将要使用它可能只是1或20,并且每次我必须创建一个新的阵列whit out丢失以前的数据已经填好了,谢谢各位的关注,

+3

你不能用任何理由'名单'? – recursive 2012-08-01 20:26:17

+0

@recursive列表不会为我的程序purpe工作这个原因 – JUAN 2012-08-01 21:31:50

回答

2

一旦创建数组,大小的定义是不变的。如果您需要可变数量的元素,请使用List<T> - 对您而言,可能是List<int[]>

唯一的替代解决方案是创建一个具有新大小的新阵列(并将其分配给您的jag_array变量),并将旧阵列中的所有先前元素复制到新阵列中。这是不必要的复杂代码时,你可以用List<T>,但如果你不能以任何理由使用List<T>,这里有一个例子:

// increase the length of jag_array by one 
var old_jag_array = jag_array; // store a reference to the smaller array 
jag_array = new int[old_jag_array.Length + 1][]; // create the new, larger array 
for (int i = 0; i < old_jag_array.Length; i++) { 
    jag_array[i] = old_jag_array[i]; // copy the existing elements into the new array 
} 
jag_array[jag_array.Length - 1] = ... // insert new value here 
+0

你也可以使用指向数组的指针数组! – Daniel 2012-08-01 20:28:30

+0

没关系,我以为这是C++ – Daniel 2012-08-01 20:28:51

+0

@Daniel:你是什么意思?在C#中,数组是一个引用类型,所以数组的数组已经可以说是指向数组的指针数组了。 – 2012-08-01 20:29:25