我想构建一个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 :(得分: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;
}