具有不同列数的C ++ 2D数组

时间:2014-02-11 19:46:34

标签: arrays dynamic 2d

我想构建一个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

1 个答案:

答案 0 :(得分: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;
}