2014-02-11 78 views
0

列我想建立一個二維動態數組 - 填充時 - 應該像以下:C++ 2D陣列與不同數目的

xxx 
xxxxx 
xx 
x 
xxxxxxx 

也就是說,每一行將具有多個列的那我不能提前知道。我試圖用以下方式對此進行定義:

int nRows = 10; 
int **X = new int *[nRows]; 
for(int i=0; i<nRows; i++) 
{ 
    int nCols = rand()%10; 
    X[i] = new int[nCols]; 
} 

您是否發現此代碼有問題?

非常感謝您的時間, RIPO

回答

0

是:nCols可能是0,所以你應該做的,而不是nCols = 1+rand()%10

另外,你打算如何知道每行的大小後,你已經分配它?

您需要保存一個單獨的數組,其中包含每行的大小,或者在每行的末尾添加一個「虛擬」條目以標記該行的結尾。

這裏是你如何維護包含每一行的大小其它陣列:

int nRows = 10; 
int **X = new int *[nRows]; 
int *S = new int [nRows]; 

for(int i=0; i<nRows; i++) 
{ 
    int nCols = 1+rand()%10; 
    X[i] = new int[nCols]; 
    S[i] = nCols; 
} 
+0

感謝您的及時回覆。實際上,在我的代碼中,我已經處理了列的「0」大小和每行的列大小,儘管在這個例子中我顯然沒有。所以,爲了清晰起見,我們將您的代碼作爲模板。遵循這種表示可以嗎?因爲某種原因,後來它崩潰了,我試圖通過消除來找到問題。再次感謝你! – Ripo

+0

我不能說這是一個很好的模板,因爲我不確定你的這個代碼的一般意圖。如果它在其他地方崩潰,那麼你應該發佈一個與所有相關信息不同的問題。 –