2014-10-27 220 views
0

我是Java程序員。我試圖在Win32項目中填入數組C++填充二維數組

int **Data::matrixInitialize() 
{ 
    int** MX = new int*[n]; 
    for (int i = 0; i < n; i++) 
    { 
     for (int j = 0; j < n; j++) 
     { 
      MX[i][j] = 1; 
     } 
    } 
    return MX; 
} 

但是這段代碼拋出了一個exeption。請幫我填充二維數組。

+0

你得到什麼異常? – drum 2014-10-27 19:29:55

+1

你必須使用數組嗎?我強烈推薦使用'vector >'或者至少'array >'而不是原始數組。 – CoryKramer 2014-10-27 19:30:00

+2

你的new只創建一個指針數組。你仍然需要自己分配整數(更多新的)。無論如何,最好使用矢量。 – Niall 2014-10-27 19:31:08

回答

3

你會錯過的分配:

int **Data::matrixInitialize() 
{ 
    int** MX = new int*[n]; 
    for (int i = 0; i < n; i++) 
    { 
     MX[i] = new int[n]; // Missing line 
     for (int j = 0; j < n; j++) 
     { 
      MX[i][j] = 1; 
     } 
    } 
    return MX; 
} 

但它會更好地使用std::vectorstd::array

+0

謝謝你U救我的屁股))) – AskQuestion 2014-10-27 19:36:19

1

請嘗試以下

#include <algorithm> 

//... 

int **Data::matrixInitialize() 
{ 
    int** MX = new int*[n]; 

    for (int i = 0; i < n; i++) 
    { 
     MX[i] = new int[n]; 
     std::fill_n(MX[i], n, 1); 
    } 

    return MX; 
}