2012-08-01 78 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