2014-10-27 177 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; 
}